我有一个显示一些文本输入字段的警报对话框。当我输入数据并单击“确定”时,它将保存此数据并将其显示在调用对话框的“活动”上的自定义视图中。
如果要编辑此数据,请单击自定义视图,然后弹出相同的警报对话框。我想预先填充数据,并允许编辑和添加新数据。但是,这是我遇到问题的地方。
[当我尝试将现有数据添加到对话框时,视图被添加到视图的顶部,而不是我希望它们添加到的子视图。看到这里:
因此警报对话框会从我的活动中放大视图:
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
膨胀,这是顶部添加的行。
所以我真正的问题是,如何将这一行添加到对话框视图的子视图中?
感谢。
您可以尝试先创建容器LinearLayout as root
,然后创建addView(convertView)
和return root
您只需要获取或创建子视图。如果存在:
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);