Android ListView保持选中项高亮

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(); 



其中listView是你用findViewById获得的ListView 这样就可以了。具体原理未知。 还希望有达人能解惑。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值