如何在Android中更改ListView的子视图?

时间:2015-07-26 11:05:04

标签: android listview

我的ListView适用于自定义适配器,每行有两个ImageView和一个TextView。 我想通过更改其ImageView来处理两个drawable之一的点击。

我尝试了AdapterView.OnItemClickListener课程 并且还尝试在适配器类中的OnClickListener上添加特定的ImageView 并且听力在那里工作,但它无法更新drawable的{​​{1}}。

那我怎么做呢?

这是我ImageView方法中的代码:

adapter.getView()

1 个答案:

答案 0 :(得分:0)

正如@ has19所评论的那样。在onClick上不要直接更改ImageView的可绘制内容,而是更改您在适配器getView中选择drawable的数据。然后在单击后调用适配器上的notifyDataSetChanged()

示例伪代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final MyObject myObject = getItem(position);

    ImageView imageView = convertView.findViewById(R.id.myImageViewId);
    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            myObject.setImageSelectionCriteria(someCriteria);
            MyAdapter.this.notifyDataSetChanged();
        }
    });

    if(myObject.getImageSelectionCriteria().equals(someCriteria)) {
        imageView.setImageResource(R.drawable.some_drawable);
    } else {
        imageView.setImageResource(R.drawable.some_other_drawable);
    }
}