【问题标题】:listView items to stay highlighted after being clickedlistView 项目在被点击后保持突出显示
【发布时间】:2016-05-09 04:06:29
【问题描述】:

我有一个ListView,我希望单击的项目具有背景颜色以指示当前选择了哪个项目。 我通过指定选择器字段实现了这一点

<ListView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/sub_arguments_listView"
    android:layout_weight="1"
    android:listSelector="@drawable/list_selector"
    android:choiceMode="singleChoice"
    android:clickable="true"/>

list_selector.xml 是:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/seperator_color" />
    <item android:state_focused="true" android:drawable="@color/seperator_color" />
    <item android:state_activated="true" android:drawable="@color/seperator_color" />
    <item android:state_selected="true" android:drawable="@color/seperator_color" />
    <item android:state_active="true" android:drawable="@color/seperator_color" />
    <item android:drawable="@color/seperator_color" />
</selector>

我添加了ListView.onItemClickListener():

 public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
   String text ="sometext";
    ((TextView)mMainView.findViewById(R.id.sub_argument_text)).setText(text);
}

只要变量“text”的内容很短,它就可以正常工作并且符合预期。 我遇到的问题是,当变量“text”的内容是长文本时,TextView 更新得很好,但ListView 中的选定项目由于某种原因(我的猜测是焦点丢失)。如果我再次单击同一个项目,则背景会保持不变,并且该项目仍然突出显示。 另请注意,我有两台 Android 设备:

  1. Marshmallow 5.0 是一个快速的设备。而且我没有看到这个问题。
  2. 第二个是 4.2 且速度相对较慢的设备,显示此问题。

我错过了什么?如何使 listView 中被点击的项目一直保持突出显示,直到另一个项目被点击?

谢谢

【问题讨论】:

  • 使 Listview 可点击使适配器类中的项目 android:focusable="false" android:focusableInTouchMode="false" android:clickable="false"
  • 好的。我删除了可点击属性,但仍然遇到同样的问题?
  • 您不要从列表视图中删除可点击的内容。我说的是适配器类视图

标签: android listview


【解决方案1】:

试试这个,

 public void onItemClick(AdapterView<?> parent, View view, int position, long id)
     {

       listView.setItemChecked(position, true);

     }

这可能会对你有所帮助。

【讨论】:

    【解决方案2】:

    你可以试试这个例子...

    Android ListView. How to change background color of manually selected item

    也可以看到这个答案

    Change background color of selected item on a ListView

    在您的代码中

    listView.setOnItemClickListener(new OnItemClickListener() {
    
         @Override
         public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
             view.setSelected(true);
             ...
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 1970-01-01
      • 2016-01-09
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2016-11-15
      • 1970-01-01
      相关资源
      最近更新 更多