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

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

    还希望有达人能解惑。

  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/zcdqs/p/2221935.html
Copyright © 2011-2022 走看看