【问题标题】:How to highlight the selected list item even after losing focus?即使失去焦点,如何突出显示选定的列表项?
【发布时间】:2015-05-13 22:00:21
【问题描述】:

我正在构建的一个活动包含一个ListView 和一个GridView。 gridview 的内容将根据 ListView 中选择的项目进行更新。现在,我使用选择器通过更改背景来突出显示 ListView 中的选定项目。但是一旦 ListView 失去焦点,所选项目就不再突出显示。有没有办法在列表视图失去焦点后突出显示列表项?

【问题讨论】:

  • 我使用choiceMode="singleChoice" 获得了部分成功。当我使用 CheckedTextView 选择背景时,选择器效果很好。但是当我使用自定义 CheckedLinearLayout 作为每个项目的布局时,我会遇到一些问题。一旦我修复它,我会更新这个线程。

标签: android android-listview


【解决方案1】:

设置您的选择器以识别激活状态

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Selected Item -->
    <item android:state_selected="true"
        android:drawable="@android:color/holo_blue_light" />
    <item android:state_activated="true"
        android:drawable="@android:color/holo_blue_light" />

    <!-- Default Item -->
    <item android:state_selected="false"
        android:drawable="@android:color/white" />
</selector>

不仅选择,而且激活onListItemClick

@Override
    public void onListItemClick(ListView listView, View view, int position,
            long id) {
        super.onListItemClick(listView, view, position, id);

        view.setSelected(true);
        view.setActivated(true);
}

【讨论】:

    【解决方案2】:

    我认为您想保持某些列表的单击项的状态。为此,您可以使用布尔 ArrayList 来维护列表每一行的状态。您可以在适配器的 getView() 中使用此 ArrayList。根据状态设置背景。例如在 getView() 中设置 View 的背景图像或颜色。 Here 是我正在谈论的一个想法。您也可以将其用于您的目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2022-06-11
      • 2013-08-18
      • 2017-04-18
      • 1970-01-01
      • 2011-02-24
      相关资源
      最近更新 更多