处理动态创建布局android的子布局上的点击



你好,devs,我正在制作一个动态视图,在其中添加一个文本视图和一个图像视图,点击图像视图时,布局应该被删除。但问题是,当我点击布局的子项时,需要两次点击才能删除。

任何帮助都将不胜感激。

布局代码为:

LinearLayout a = new LinearLayout(mContext);
a.setOrientation(LinearLayout.HORIZONTAL);
TextView itemNameTV = new TextView(mContext);
itemNameTV.setLayoutParams(lparams);
itemNameTV.setText(myInventoryItemRs.getQuantity());
ImageView delete = new ImageView(mContext);
itemNameTV.setLayoutParams(lparams);
delete.setImageDrawable(ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_close, null));
holder.item_quantity_editText.setText("");
myInventoryItemRs.setQuantity("");
a.addView(itemNameTV);
a.addView(delete);
holder.add_more_items.addView(a);

并点击收听更多项目

moreItems.setOnClickListener(v -> {
try {
// On first click this is called.
Toast.makeText(mContext, "Layout outer", Toast.LENGTH_SHORT).show();
int count = moreItems.getChildCount();
Log.e(TAG, "onClick: " + count);
View nv;
for (int i = 0; i < count; i++) {
try {
nv = moreItems.getChildAt(i);
ImageView delete = (ImageView) ((LinearLayout) nv).getChildAt(1);
View finalNv1 = nv;
delete.setOnClickListener(v1 -> {

// On Second click this is called.
Toast.makeText(mContext, "Layout inner", Toast.LENGTH_SHORT).show();
moreItems.removeView(finalNv1);
});
TextView tnv = (TextView) ((LinearLayout) nv).getChildAt(0);
} catch (Exception e) {
Log.e(TAG, "onClick: " + e);
}
}
} catch (Exception e) {
Log.e(TAG, "onClick: " + e);
}
});

如果您的视图结构看起来像https://i.stack.imgur.com/p7JAE.png

创建时,您可以在每个ImageView中设置OnClickListener。

delete.setOnClickListener(view ->
((ViewGroup)view.getParent().getParent()).removeView((View) view.getParent())
);

这不是最好的决定,但它应该工作

最新更新