在Listview Android中突出显示所选视图

时间:2015-03-03 14:09:50

标签: android android-listview notifydatasetchanged

我有一个listview和一个相应的listview适配器。

Listview中显示的视图是我自己编写的,它是一个带有一个按钮和一个图像按钮的framelayout。图像按钮是红叉,删除条目,常规按钮选择条目。

当用户按下常规按钮时,该项目被选中,我想通过将该项目的背景设置为绿色来向用户显示该项目。应用程序存储用户选择的项目以及下次呈现列表视图时,应选择该项目并选择绿色。

请注意,我的列表视图中应始终有一个且只有一个选定的项目。

在我的adaper的getView(..方法中,当用户点击它时,它很容易改变按钮的颜色。但是在用户点击之前绿色的按钮是我无法参考的。

  • 我尝试将引用存储在先前选中的按钮中,但它从未重新绘制
  • 我尝试从列表中删除并添加数据项以触发notifyDataSetChanged,但它从未重新绘制
  • 我尝试了setChoiceMode(ListView.CHOICE_MODE_SINGLE),但这无处可去,因为我不知道如何在我的getView方法中捕捉选择并根据其选择与否进行不同的绘制。

我看到的所有指南建议使用notifyDataSetChanged。但是,在这种情况下,基础数据不会更改,并且它不是正确的(或可能的)解决方案。

所以我认为我的问题归结为:我如何在listview中引用另一个视图?

(是的,我看过这篇文章:Highlight selected item in ListView on Android。它描述了我的问题并用#34;回答,然后将之前所选项目背景的颜色改回正常状态&#34 ;但我仍然无法参考PREVIOUS所选项目。

谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不使用Radio Buttons?这正是您需要的设计。你可以添加一个"红叉"在每一行删除该行。所选行是唯一的,您可以在RadioButton.isChecked(); RadioGroup上进行迭代,以相应地设置背景颜色。