我有自定义适配器的listview。在每行中,我有2个textviews和一个按钮。我希望当我点击某个项目突出显示它并保持突出显示时,直到我点击另一个项目。我尝试用列表选择器做但没有成功。然后我试着这样做:
public void onClick(View v) {
ListView lvItems = context.lvLists;
for (int i=0; i < lvItems.getChildCount(); i++)
{
lvItems.getChildAt(i).setBackgroundColor(Color.BLACK);
}
v.setBackgroundColor(Color.parseColor("#555555"));
这是列表视图的每一行的onclick。它工作但我看到当我向下滚动时,选择了更多的项目(我没有选择)。解决这个问题?
答案 0 :(得分:1)
如果要保存ListView项目的某些属性,则不能依赖于Views本身。您必须将它们存储在数据中,以便适配器知道哪个项目的状态已更改。 有关详细信息,请参阅此问题的答案:
Android: Spinners within a ListView loose their values when I add dynamically new ListView entries
答案 1 :(得分:0)
您应该实现视图持有者模式,然后在持有者代码中,您可以拥有一个(布尔)变量来保存该项目的当前状态(突出显示或不突出显示),相应地更改背景颜色。 / p>
答案 2 :(得分:0)