我有一个用XML定义的表和一个将视图定义为另一个XML的行。假设我需要用5行填充表格。运行以下代码:
final ViewGroup table = (TableLayout)findViewById(R.id.table);
View row = null;
TextView title = null;
for(int i=0; i<5; i++)
{
row = LayoutInflater.from(this).inflate(R.layout.row, null, false);
title = (TextView)row.findViewById(R.id.text_title);
title.setText("val");
ImageView x= (ImageView)itemView.findViewById(R.id.remove);
x.setOnClickListener(delimg);
table.addView(row);
}
private OnClickListener delimg = new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
TextView tv = (TextView) findViewById(R.id.pname);
tv.setText("Deleted item!");
}
};
它工作正常但是当我尝试将onclicklistener添加到图像时,它只更改第一行而不是corressponding行。请帮忙。
答案 0 :(得分:0)
itemView来自哪里?假设你想要为你的行设置监听器的ImageView,你可以尝试改变:
ImageView x= (ImageView)itemView.findViewById(R.id.remove);
到
ImageView x= (ImageView) row.findViewById(R.id.remove);
它是否适用于这种变化?
我可能误读了“它只会改变第一行”。在每行中是否有pname,并且无论您单击哪一行,文本都会在第一行中更改?如果是这样,那么您需要将onClick()更改为:
TextView tv = (TextView) arg0.findViewById(R.id.pname);
tv.setText("Deleted item!");
否则,它会在整个活动中找到第一个带有该ID的项目。