单击项目时ListView图像不更新

时间:2014-01-29 18:36:58

标签: android listview imageview

我正在使用清单的自定义列表视图。 使用ArrayAdapter设置一个图像和一些文本。 当用户单击列表中的项目时,我想首先删除当前使用XML中的后台资源设置的图像视图的图像,并替换为另一个可绘制的。

首先图像不会消失,其次我试图设置它的图像似乎随机出现,有时根本不出现:

onListItemClicked方法

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        //  when a list item is clicked, first remove the XML set image  cross to a replace with tick on image view

        super.onListItemClick(l, v, position, id);

        ImageView equitmentCrossed = (ImageView) this.findViewById(R.id.iv_equitmentCheckList_Cross);
        equitmentCrossed.setBackgroundResource(0);
        //displayImage.setBackground(null);
        equitmentCrossed.setBackgroundResource(R.drawable.tick);

    }//end onListItemClicked

Array Addapter:

ArrayAdapter checklistadaptor = new ArrayAdapter<Pair<String, Integer>>(this,
            R.layout.checklist_row, R.id.tv_equimentChecklistName, equitmentAndImagesArray) {

    //over ride getView
    public View getView(int position, View convertView, ViewGroup container) {
        if(convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.checklist_row, container, false);
        }

        TextView title = (TextView) convertView.findViewById(R.id.tv_equimentChecklistName);
        Pair<String, Integer> item = getItem(position);
        title.setText(item.first);
        ImageView displayIcon = (ImageView) convertView.findViewById(R.id.iv_equimentChecklist);
        displayIcon.setBackgroundResource(item.second);
        //title.setCompoundDrawablesWithIntrinsicBounds(item.second, 0, 0, 0);
        return convertView;
    }
 };//end getView

 this.setListAdapter(checklistadaptor);

1 个答案:

答案 0 :(得分:1)

我假设您使用的是ListActivity?因此,当您在this.findViewById()中致电onListItemClick()时,this会引用ListActivity,其中包含多个ID为iv_equitmentCheckList_Cross的视图(每个条目一个)。 Android通常会返回第一场比赛。尝试将其更改为v.findViewById(R.id.iv_equitmentCheckList_Cross)v应该是代表该行的视图。