• Android ListView保持选中项高亮


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

    借助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

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

    还希望有达人能解惑。

  • 相关阅读:
    Python文件操作
    两个标签页定位第二个标签页元素时显示element not visible
    Selenium Webdriver元素定位的八种常用方式
    Python集合set
    Python 字典
    数据库存储过程
    打印1-100
    》》》 《类的多态》
    》》》《类的继承》
    》》》关于eclipse中git同步代码报错checkout conflict with files的解决方法
  • 原文地址:https://www.cnblogs.com/zcdqs/p/2221935.html
Copyright © 2020-2023  润新知