Android-将视图动态添加到弹出对话框中

问题描述 投票:0回答:1

我有一个显示一些文本输入字段的警报对话框。当我输入数据并单击“确定”时,它将保存此数据并将其显示在调用对话框的“活动”上的自定义视图中。

如果要编辑此数据,请单击自定义视图,然后弹出相同的警报对话框。我想预先填充数据,并允许编辑和添加新数据。但是,这是我遇到问题的地方。

[当我尝试将现有数据添加到对话框时,视图被添加到视图的顶部,而不是我希望它们添加到的子视图。看到这里:

Populated View show be under the headings

因此警报对话框会从我的活动中放大视图:

View dialogView = LayoutInflater.from(this).inflate(R.layout.material_add_dialog, viewGroup, false);
builder.setView(dialogView);

但是此R.layout.material_add_dialog是主视图/俯视图。

我也有一个自定义适配器类。这是getView()方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = Objects.requireNonNull(mInflater).inflate(R.layout.add_material_popup_dialog_row, null);
    }

    Material material = mMaterials.get(position);

    EditText etMaterial = convertView.findViewById(R.id.material_add_text_material);
    EditText etSupplier = convertView.findViewById(R.id.material_add_text_supplier);
    EditText etWeight = convertView.findViewById(R.id.material_add_text_weight);
    EditText etAmount = convertView.findViewById(R.id.material_add_text_amount);

    etMaterial.setText(material.getMaterial());
    etSupplier.setText(material.getSupplier());
    etWeight.setText(material.getUnit());
    etAmount.setText(material.getAmount());

    return convertView;
}

因此,如果您看到convertView,这将使R.layout.add_material_popup_dialog_row膨胀,这是顶部添加的行。

所以我真正的问题是,如何将这一行添加到对话框视图的子视图中?

感谢。

android android-alertdialog
1个回答
0
投票

您可以尝试先创建容器LinearLayout as root,然后创建addView(convertView)return root


0
投票

您只需要获取或创建子视图。如果存在:

View dialogView = LayoutInflater.from(this).inflate(R.layout.material_add_dialog, viewGroup, false);
View subView = dialogView.findViewById(R.id.mySubViewId);

或者,您可以创建一个新视图并将其添加到当前视图:

//You would need to create the appropriate view for your use-case.
View view = new View();
dialogView.addView(view);
© www.soinside.com 2019 - 2024. All rights reserved.