Android:在 setSelecton 上突出显示列表中的项目

2024-05-01

我有一个 ListView 和 listselector.xml。最初我使用 setSeletion(position) 设置该项目。但使用此代码该项目不会突出显示。仅当我单击某个项目时它才会突出显示。

        ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems);
    timeListView = (ListView) findViewById(R.id.listList);
    timeListView.setAdapter(ad);
    timeListView.setOnItemClickListener(this);      
    timeListView.setSelector(R.drawable.listselector);
    timeListView.setSelection(toSelectPos);

     ============================= 
     XML      
     <ListView android:id="@+id/listList" android:layout_width="match_parent"    android:layout_height="wrap_content"  android:dividerHeight="1dp" >

listselector.xml代码

     <?xml version="1.0" encoding="UTF-8"?>
     <!-- listselector.xml  -->
     <selector xmlns:android="http://schemas.android.com/apk/res/android">  
<!-- Selected -->
<item android:state_focused="true" android:state_selected="false"
        android:drawable="@drawable/focused"/>

<!-- Pressed -->
<item android:state_selected="true" android:state_focused="false"
        android:drawable="@drawable/selected" />     
      </selector>

上面的代码突出显示完整的列表视图,我只想突出显示(更改背景颜色)该项目。为此,我相信我必须为该项目创建另一个 xml,并为该项目设置选择器属性,而不是像上面那样列出。如果错了请纠正我。

关键是,无论如何,只有单击和 setSelection 上的选定项目才应该更改。使用上面的代码,它不会改变 setSelection,如何实现这一点。

我查看了其他问题,但找不到我要找的点,所以请不要将其标记为其他问题的重复项。

Thanks


我不确定这是否正确,但我从 support-v4 示例的片段演示中找到了以下解决方案。

制作可检查的自定义布局并将此布局用于列表行

public class CheckableLayout extends LinearLayout implements Checkable {
    private boolean mChecked;

    public CheckableLayout (Context context) {
        super(context);
    }

    public CheckableLayout (Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setChecked(boolean checked) {
        mChecked = checked;
        // set the custom background image/color
        setBackgroundResource(checked ? R.drawable.category_item_row_selected
                : R.drawable.custom_category_item_row);
    }

    public boolean isChecked() {
        return mChecked;
    }

    public void toggle() {
        setChecked(!mChecked);
    }

}

将列表视图定义为单选模式,例如YOUR_LISTVIEW.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

单击行(inside OnItemClickListener)你必须将该行设置为选中状态,例如YOUR_LISTVIEW.setItemChecked(index, true);

Thats it

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:在 setSelecton 上突出显示列表中的项目 的相关文章

随机推荐

  • 使用桌面 Appium 应用程序在模拟器上打开并崩溃

    测试环境 用于运行 Appium 的桌面操作系统 版本 版本 1 2 0 beta 3 1 2 0 beta 3 Node js 版本 除非使用 Appium app exe 测试移动平台 版本 ios模拟器 iPhone 6s 10 2
  • Bash 脚本 Mysql 警告:在命令行界面上使用密码可能不安全

    你好 我有一个脚本来对一些 mysql 数据库进行分区 我们正在从 5 5 升级到 5 6 在测试脚本时 我注意到新的 5 6 版本 mysql 返回Warning Using a password on the command line
  • Swift - 检查日期是否在下周/下个月。 ( isDateInNextWeek() isDateInNextMonth() )

    我们在日历中有这些方便的功能 let calendar NSCalendar currentCalendar calendar isDateInToday date calendar isDateInTomorrow date 但我缺少那两
  • 模拟器在 AQMEIOManager 上崩溃

    尝试播放音频时模拟器崩溃 13 22 14 211 App 2965 5603 lt 0xb03e7000 gt Error obj trying to fetch default input device s sample rate 13
  • mailto 的语法

    当使用这样的 mailto 链接时 a href title Subject Link Text a 是否可以设置 FROM 地址 更新 我忘了提及 我有一群忠实的受众 他们都将使用 IE8 和 Outlook 不幸的是 事实并非如此 您只
  • 计算 IOrderedEnumerable 的数量而不消耗它

    我想做的 简短版本 var source new 2 4 6 1 9 OrderBy x gt x int count source Count lt get the number of elements without performin
  • 使用 MVVM 为 WPF 搭建脚手架?

    谁能告诉我是否可以 如果存在某些实用程序 创建考虑到 MVVM 和 WPF 的脚手架 我的想法是我似乎有很多数据访问表单 当然我想自定义它们 但最初我想要一种快速提供表单的方法 即放置在它们上面并绑定到 mvvm 的所有控件 也许我问得很多
  • javascript单线程时onreadystatechange的调用者是谁?

    好吧 我是 javascript 的新手 听说它是单线程的 在我看来 如果您发出异步请求 它应该启动一个自己的线程来控制服务器是否已经响应 这在 JavaScript 中不起作用 我在想是否有一些内置机制可以保存所有侦听器并调用它们 具体取
  • 在github原子编辑器中隐藏隐藏(点)文件

    我对 Github Atom 编辑器非常陌生 它总是显示隐藏文件 例如 git sass在侧窗格中 如何在atom编辑器的侧窗格中隐藏隐藏文件 点文件 编辑 gt 首选项 gt 包 在 已安装的软件包 下面的字段中 输入 树视图 该软件包有
  • 在 Java 中打印 HashMap

    我有一个HashMap private HashMap
  • 复制cordova 2.2.0 .jar

    我需要新的 jar 文件来升级到 cordova 2 2 0 但我在哪里可以找到它呢 我必须生成它吗 如何生成 多谢 您可以从以下位置下载 PhoneGap GitHub 存储库 https github com phonegap phon
  • 如何在java中使用cypher加载CSV文件?

    我是密码新手 我想在java中使用cypher加载csv 我用谷歌搜索并找到了以下作品 LOAD CSV WITH HEADERS FROM http neo4j com docs 2 3 1 csv import movies csv A
  • aws cli 中的 SSL CERTIFICATE_VERIFY_FAILED

    我安装了AWS CLI http docs aws amazon com cli latest userguide installing html install msi on windows在 Windows Server 2007 32
  • 使用 Peewee 追溯创建索引?

    有没有办法用 Peewee 追溯索引 sql 文件的列 即初始规范未建立索引的情况 询问是因为执行所有插入然后建立索引应该更快 而不是相反 有没有办法用 Peewee 追溯索引 sql 文件的列 Yes Pewee s http docs
  • jax-rs ContextResolver 理解

    但我试图了解 jax rs 中 Provider 的用法 但无法理解如何使用 ContextResolver 有人可以用一些基本的例子来解释这一点吗 您将看到它在解析序列化上下文对象时被大量使用 例如一个ObjectMapper用于 JSO
  • 将电子邮件签名添加到电子邮件通知脚本

    我正在 Google Apps 脚本上编写一段代码 以便每次在我的网站上发布新公告时发送电子邮件 这是供参考的代码 var url of announcements page https sites google com announcem
  • 如何在 Python 中使用 PIL 将一张图像合成到另一张图像上?

    我需要拍摄一张图像并将其放置到新生成的白色背景上 以便将其转换为可下载的桌面壁纸 所以这个过程是这样的 生成尺寸为 1440x900 的新的全白图像 将现有图像放在顶部居中 另存为单张图像 在 PIL 中 我看到ImageDraw对象 但没
  • SQL SERVER 和 SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON

    所以我在创建脚本时一直盲目地使用ansi nulls on quoted identifier on 因为sqlserver在编写对象脚本时会自动生成它们 我真的没有时间关心这些琐碎的废话 但我想必须提出这些问题 鉴于这些是推荐的设置 是否
  • 角度`@Host`装饰器没有到达顶部?

    在我的主要app ts我已宣布成为全球提供商 providers provide Dependency useValue createDependency AppModule provider Where createDependency只
  • Android:在 setSelecton 上突出显示列表中的项目

    我有一个 ListView 和 listselector xml 最初我使用 setSeletion position 设置该项目 但使用此代码该项目不会突出显示 仅当我单击某个项目时它才会突出显示 ArrayAdapter