android listview交替行颜色但具有默认光标选择

2023-12-14

我已经遍及整个网络,包括 stackoverflow,但似乎无法找到一个清晰的完整方法

我想创建一个 ListView

1)有交替的颜色(我可以用下面的代码做到这一点) 2)保留了android默认的橙色选择行为

为了完成#1,我有一个自定义适配器 扩展 ArrayAdapter 然后我像这样重写 getView

public View getView(int position,  View convertView,   ViewGroup parent)
{
  ....

  // tableLayoutId is id pointing to each view/row in my list
  View tableLayoutView = view.findViewById(R.id.tableLayoutId); 
  if(tableLayoutView != null)
  {
      int colorPos = position % colors.length;
      tableLayoutView.setBackgroundColor(colors[colorPos]);
  }
}

我的颜色成员变量是

private int[] colors = new int[] { 0x30ffffff, 0x30ff2020, 0x30808080 };

跟着文章“Android – Applying Alternate Row Color in ListView with SimpleAdapter”发现here

现在这就是我陷入困境的地方,我在 stackoverflow 上看到一些提到这样做,因为它很常见,他们建议将此属性添加到

android:listSelector="@color/list_item"

其中 list_item.xml 类似于

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_selected="true"
    android:drawable="@drawable/transparent" />
   .....
 </selector>

然后我必须向 getView() 添加代码来确定我处于哪个状态 并采取相应行动。

有没有一个例子可以让它发挥作用?谢谢大家 如果我能让它发挥作用,我很乐意将其发布供所有人使用。 :-(


解决方法是使用 2 个选择器。在适配器中,您不是设置 2 种颜色,而是设置 2 个选择器。

if (position % 2 == 0) {
  view.setBackgroundResource(R.drawable.selector_1);
} else {
  view.setBackgroundResource(R.drawable.selector_2);
}

selecter_1 在selector_1.xml 中定义如下:

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

selecter_2 在selector_2.xml 中定义如下:

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

这样,您就有了一个双色列表视图和第三种颜色/形状/任何您想要的所选项目。

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

android listview交替行颜色但具有默认光标选择 的相关文章

随机推荐

  • 内有较长任务的角间隔管道

    我的组件中有这段代码 ngOnInit this counterValue interval 1000 pipe switchMap gt this perfService getCounter this counterUrl map i
  • 为什么 $ra 被调用者保存在 RISC-V 中

    我发现在 RISC V 中 ra调用者是否已保存 以 MIPS 为单位 ra是被调用者 这意味着在 RISC V 中被调用者可以直接更改ra没有保存 但自从ra已经改变了 被调用者如何返回调用者 无论名称如何 RISC V ra 和 MIP
  • NSTimer 在 iPhone 中关闭应用程序后继续计数

    我有一个计时器 最多可以计时 8 小时 28800 秒 之后它应该被释放 我想知道如何让计时器在后台运行和 或在应用程序关闭时保持运行 这是 NSTimer stopWatchTimer NSTimer scheduledTimerWith
  • 如何在构建另一个容器期间填充 Mysql docker 容器?

    我正在尝试构建一个 docker compose 文件 该文件自动为我的应用程序构建一个容器和一个存储所有数据的 mysql 容器 在我的应用程序的 dockerfile 中 我有一个脚本 用于设置应用程序运行所需的所有数据库表和预设值 是
  • 将最近 7 天的 Windows 事件导出到 evt 文件

    很难相信我只花了一个小时在网上搜索 却找不到一个看似简单的请求的答案 我想要做的就是获取最近 7 天的 Windows 系统和应用程序事件 并将每个事件作为 evt 格式的文件导出到特定文件夹 所以不是 csv 或 xml 有没有一种简单的
  • 使用 AJAX - WooCommerce API 将变体添加到购物车?

    我有一个包含以下数据的项目 var item id 124 name xxx price 13 13 quantity 1 options size xl color pink 当用户单击 添加到购物车 时 我想使用 WC API 发出 A
  • 如果超过 12 列自动换行,我们真的需要关闭它吗?

    我已经使用 Bootstrap 一段时间了 特别是版本 3 并且注意到我仍然不确定是否应该始终在每 12 列之后关闭带有 row 类的列 或者我可以等待并在我的代码末尾应用该结束 row 只要据我所知 任何在单行中加起来超过 12 列的列都
  • 将 STUFF 与 INNER JOIN 查询结合使用

    我的数据库中有三个表 产品表 类型表和名为 Prod Type 的映射表 我的数据库是sql server 这就是为什么我不能使用group concat函数而我正在使用Stuff函数 我的表结构如下 产品表 Prod ID Name Br
  • Eclipse 构建路径不可用

    The build path option is not available when I right clicked on one of the the jars I wanted to include Anybody knows why
  • git 分支名称中的 Powershell 和德语变音符号

    我编写了一个批处理文件 它使用 powershell 命令删除除要保留的分支之外的所有本地 git 分支 如果分支名称中使用了德语变音符号 则不起作用 切换到分支 master 您的分支是最新的 origin master 已删除分支 DE
  • 如何使用 javascript 检索数组中 17 textBox 的值

    我写了下面的代码 太长了 我想要一些更短的代码 b 0 parseInt document getElementById textbox1 value b 1 parseInt document getElementById textbox
  • 从一个类访问另一个类的结构

    是否可以从另一个类访问结构 ex class A struct structOfClassA func returnLetterA gt String return a class B let classA A init classA st
  • 如何让 Gson 序列化基本名称值对列表?

    我正在尝试使用类型适配器和 Gson 序列化 BasicNameValuePairs 列表 ArrayList
  • 如何解码中文文本中的unicode

    with open result txt r as f data f read print What type is my data print type data for i in data print what is i print i
  • 重命名后Golang相对包导入

    我的 GOPATH 是 Users peter goworkspace 我当前的 golang 版本 go version go1 6 darwin amd64 我在这个工作区下有多个golang项目 所以这是目录结构 goworkspac
  • $(this) 和 this 位于点击事件中

    我有一个自己的 js 类 并尝试在点击事件中使用 jquery 的 this 和 object this jquery 的 this 工作正常 但对象 this 未定义 http jsfiddle net j33Fx 2 var mycla
  • Pandas:当条件和条件满足时找到最大值

    我有一个数据框 df id volume saturation time delay normalised speed BPR free speed BPR speed Volume time normalised 27WESTBOUND
  • asp.net mvc视图页面上可以有webform控件吗?

    asp net mvc视图页面上可以有webform控件吗 我想我之前读过它 但我不确定它是如何工作的 因为 MVC 不使用视图状态等 可以 但是 Viewstate 不可用 因此 如果控件依赖于视图状态 则可能会出现故障 此外 事件也不会
  • 不使用 WMI 访问主板信息

    我需要在多个进程的应用程序中访问主板标识 序列号 制造商等 我已经能够使用 WMI 成功查询此信息 但我正在寻找替代方案 如果您想了解情况 我的一些应用程序行为根据硬件配置或是否设置了特定环境变量 用于测试目的 而有所不同 bool IsV
  • android listview交替行颜色但具有默认光标选择

    我已经遍及整个网络 包括 stackoverflow 但似乎无法找到一个清晰的完整方法 我想创建一个 ListView 1 有交替的颜色 我可以用下面的代码做到这一点 2 保留了android默认的橙色选择行为 为了完成 1 我有一个自定义