Android单击一个ListView项目会影响其他ListView项目吗?

时间:2016-09-21 18:33:20

标签: android listview

我的ListView项目包含以下组件 - TextView,然后在其下面有两个ImageViews - likedislike

因此,当我点击likedislike时,我希望能够将likedislike ImageView从灰色更改为蓝色。

当我点击like时,like ImageView确实从灰色变为蓝色。但不仅对于相应的ListView项而且对于列表中的每个第3项 - 所以如果我的列表中有10个项目,则单击列表中第一项的like,然后是第4项,第7项和第10项like ImageView从灰色变为蓝色。

在文件post_list_item.xml的{​​{1}}中,我指定了以下root element,但它也没有帮助。

我的问题是 - 我必须这样做,当我点击android:descendantFocusability="blocksDescendants"like时,我可以更改dislikelike { {1}}从灰色到蓝色而不影响其他列表项?

以下是dislike

的代码
ImageView

2 个答案:

答案 0 :(得分:0)

您可以在drawables / like.xml中使用状态drawable,如下所示,

like.xml

    <item android:state_activated="true"
        android:drawable="@drawable/like_blue"/>
    <item android:drawable="@drawable/like_grey"/>

您可以添加到您的imageview&#39>

android:src="@drawable/like"
android:clickable="true"

在你的适配器中,

   ivLike.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

          if(ivLike.isActivated())
               ivLike.setActivated(false);
          else
               ivLike.setActivated(true);
         }
    });

对于不喜欢的图像,你也可以这样做。

答案 1 :(得分:0)

您正在遇到视图回收问题。要了解更多信息,请查看this question的答案。在您的情况下,最简单的方法是使用传递到Quantstrat方法的视图:

onClick