单击按钮时,在列表视图中更改图像视图

时间:2014-08-14 13:33:32

标签: android android-listview android-imageview

我知道这个问题可能与另一个问题重复,但我试图按照类似问题的解决方案中的建议,但没有任何成功。我对android比较新,所以请指出我正确的方向。

方案: 我有一个列表视图,其中包含一个包含小图像和文本视图的自定义布局文件。列表视图按预期显示所有项目,但我想要做的是如下: 单击按钮时,将评估条件,如果结果为true,我想将默认图像更改为另一个。我知道我必须在我必须覆盖的get view方法中执行图像切换。

public View getView(int position, View convertView, ViewGroup parent) {
            View itemView=convertView;
            if (itemView==null) {
                itemView=getLayoutInflater().inflate(R.layout.check_list_view, parent, false);
            }
            MailObject currentMailObject=mailList.get(position);
            ImageView ivCurrentMail=(ImageView)itemView.findViewById(R.id.ivMailIcon);
            if (mailList.get(position).isScanned()) {
                ivCurrentMail.setImageResource(R.drawable.ic_mail_scanned);

            }


            return itemView;
        }

按钮的代码是:

btnSave.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), scanResult, Toast.LENGTH_LONG).show();

            if(!scannedMails.contains(scanResult))
            {
                scannedMails.add(scanResult);
                for (int i = 0; i < mailList.size(); i++) {
                    if (mailList.get(i).getCode().equalsIgnoreCase(scanResult)) {
                        int position=i;
                        mailList.get(i).setScanned(true);

                        ImageView ivCurrent = (ImageView) lvMails.getAdapter().getView(position, null, null).findViewById(R.id.ivMailIcon);
                        ivCurrent.setImageResource(R.drawable.ic_mail_scanned);

                        lvMails.invalidateViews();

                    }
                }

            }           






        }
    });

列表视图项的XML文件如下:          

<ImageView
    android:id="@+id/ivMailIcon"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:src="@drawable/ic_mail_not_scanned" />

    <TextView
        android:id="@+id/tvMailItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="17dp"
        android:layout_toRightOf="@+id/ivMailIcon"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

我确实通过在列表视图项目上单击显示Toast消息来测试条件是否应该评估,结果是正数但图像不会改变。请让我知道我哪里出错或错过了什么。感谢

1 个答案:

答案 0 :(得分:0)

您要将相同的图像设置两次。在这两种情况下,您都使用指向setImageResource()的{​​{1}} ImageView方法将drawable设置为R.id.ivMailIcon

你可能在点击时再次正确地“设置”图像,但由于它是相同的图像,它似乎不会改变。

相关问题