http://wenku.baidu.com/view/f1e2752b2f60ddccda38a0be.html
项目中需要列表中选中的项保持高亮在网上搜了一下大部分文章提到的都是下面这种方法 借助Listview的Tag属性.
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();