zoukankan      html  css  js  c++  java
  • 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

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

    还希望有达人能解惑。

  • 相关阅读:
    《Java程序设计》 第一周学习任务(2)
    《Java程序设计》 第一周学习任务(1)
    Git 提示fatal: remote origin already exists 解决办法
    写给小白的酸酸乳使用方法
    美國Tarrant County College
    硬盘数据恢复工具终身版
    安卓手机系统安装虚拟机
    linux网络基础
    Linux基础命令:read
    Linux shell基础
  • 原文地址:https://www.cnblogs.com/zcdqs/p/2221935.html
Copyright © 2011-2022 走看看