Android ListView保持选中项高亮

本文介绍了如何在Android应用中使用ListView实现列表项高亮显示的功能,包括使用Listview的Tag属性和在布局中加入空LinearLayout的两种方法,并解释了各自的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中需要列表中选中的项保持高亮,在网上搜了一下,大部分文章提到的都是下面这种方法:

借助ListviewTag属性.

OnItemClickListener listviewMemuOnItemClickListener = new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,

int position, long id) {

if (((ListView) parent).getTag() != null) {

((View) ((ListView) parent).getTag())

.setBackgroundDrawable(null);

}

((ListView) parent).setTag(view);

view.setBackgroundResource(R.drawable.listitem_bk);

}

});

最初的出处没有去追踪......

试了一下确实可以达到目的,但是似乎有个Bug:当列表中内容比较多,然后在界面向下滚动“翻页”时会发现每页都一项被高亮了,可能和tag有关。

这里提供另一种保持高亮的方法:

在包含ListView的布局文件中加入一个空的LinearLayout,以我的main.xml为例:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

<LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content" android:focusableInTouchMode="true">

</LinearLayout>

<ListView android:id="@+id/listView" android:layout_width="fill_parent"

android:layout_height="wrap_content"></ListView>

</LinearLayout>

然后在onItemClick中加入

listView.clearFocus();

listView.requestFocusFromTouch();

其中listView是你用findViewById获得的ListView

这样就可以了,具体原理未知。

还希望有达人能解惑。

转载于:https://www.cnblogs.com/zcdqs/archive/2011/10/23/2221935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值