我正在尝试使用Adapter
进行测验活动并在每个项目中使用多个按钮。我onClickListener
用于 tstA ImageView
。单击后,图像发生变化,但其他 tstAImageViews
图像也会发生变化(每 4 个项目中一个)。这样做的正确方法是什么?
这是我的代码TestAdapter
:
public class TestsAdapter extends ArrayAdapter<TestsItem>{
Activity holder;
int layoutResourceId;
TestsItem item[];
public TestsAdapter(Context ctx, int resource, TestsItem[] testItem){
super (ctx,resource,testItem);
holder = (Activity)ctx;
layoutResourceId = resource;
item = testItem;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
if (convertView==null){
LayoutInflater inflate = holder.getLayoutInflater();
convertView = inflate.inflate(layoutResourceId,parent,false);
}
final ImageView tstA = (ImageView) convertView.findViewById(R.id.tstA);
final ImageView tstB = (ImageView) convertView.findViewById(R.id.tstB);
final ImageView tstC = (ImageView) convertView.findViewById(R.id.tstC);
final ImageView tstD = (ImageView) convertView.findViewById(R.id.tstD);
tstA.setBackgroundResource(item[position].Test1);
tstB.setBackgroundResource(item[position].Test2);
tstC.setBackgroundResource(item[position].Test3);
tstD.setBackgroundResource(item[position].Test4);
tstA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tstA.setImageResource(R.drawable.test_item_blue);
tstB.setImageResource(R.drawable.test_item_empty);
tstC.setImageResource(R.drawable.test_item_empty);
tstD.setImageResource(R.drawable.test_item_empty);
}
});
return convertView;
}
}
假设您item[position].Test1
item[position].Test2
是已设置为背景的可绘制资源。
所以你需要onClickListener
像这样修改。
tstA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
item[position].Test1 = R.drawable.test_item_blue;
item[position].Test2 = R.drawable.test_item_empty;
item[position].Test3 = R.drawable.test_item_empty;
item[position].Test4 = R.drawable.test_item_empty;
notifyDataSetChanged();
}
});
您需要更改在适配器中传递的数组项,以正确跟踪列表项图像。调用notifyDataSetChanged
以查看列表中更改的效果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句