Android改变ListView选中行字体颜色

最近项目ListView浏览时候用改变颜色来记录选中行,网上Baidu,Google了好久,最后结合网上资料和自己的实践,

终于成功实现了功能!效果图如下:

具体的代码如下:

1、ListView的代码:

<?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">
<include layout="@layout/title_left_button"/>
<RelativeLayout 
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<include android:id="@+id/cusExp_Item_progress" layout="@layout/progress"/>	
	<com.jemsn.util.ScrollListView_ExpView
		android:id="@+id/CusExp_items_Detail"
		android:layout_width="fill_parent"		
		android:layout_height="fill_parent"
		android:listSelector="@android:color/transparent"	
	         android:cacheColorHint="#00000000" 	  	
	         android:focusableInTouchMode="true" 
		/> 
	
</RelativeLayout>  
</LinearLayout>

其中加红色的一定要加上去,否则得不到我们想要的效果!

2、DataAdpter 的代码如下:

class ScrollListViewAdapter extends BaseAdapter {
		List<CustomerExpItem> newsItems;
		public ScrollListViewAdapter(List<CustomerExpItem> newsitems) {
			this.newsItems = newsitems;
		}
		@Override
		public int getCount() {
			return newsItems.size();
		}
		@Override
		public Object getItem(int position) {
			return newsItems.get(position);
		}
		@Override
		public long getItemId(int position) {
			return position;
		}
		public View getView(int position, View convertView, ViewGroup parent) {
			LinearLayout view = new LinearLayout(getApplicationContext());
			view.setOrientation(LinearLayout.HORIZONTAL);
			ViewHolder viewHolder=null;
			if (convertView == null) {
				viewHolder = new ViewHolder();  
				// 固定的列
				View viewFix = getLayoutInflater().inflate(
						R.layout.expdetail_list_fix_items, parent, false);
				// 可以滑动的列(Layout的根布局必须是LinearLayout,原因不明)
				View viewMovable = getLayoutInflater().inflate(
						R.layout.expdetail_list_movable_items, parent, false);
				view.addView(viewFix);
				view.addView(viewMovable);
				viewHolder.fixTxt01 = (TextView) view
						.findViewById(R.id.Exp_detail_SheetCode);
				viewHolder.fixTxt02 = (TextView) view
						.findViewById(R.id.Exp_detail_SheetDate);
				view.setTag(viewHolder);
			} else {
				view = (LinearLayout) convertView;
				viewHolder = (ViewHolder) view.getTag(); 
			}
			viewHolder.fixTxt01.setText(newsItems.get(position).get_GdsName());
			viewHolder.fixTxt02.setText(newsItems.get(position).get_GdsCode());
						mArrayListMovable.add(view.getChildAt(1));
			if (position == selectItem) {
				viewHolder.fixTxt01.setTextColor(Color.GREEN);
				viewHolder.fixTxt02.setTextColor(Color.GREEN);
								
			} else {
				viewHolder.fixTxt01.setTextColor(Color.WHITE);
				viewHolder.fixTxt02.setTextColor(Color.parseColor("#40e0d0"));
							}
			return view;
		}

		public void addNewsItem(CustomerExpItem newsitem) {
			newsItems.add(newsitem);
		}
	        public  void setSelectItem(int selectItem) {  
                   this.selectItem = selectItem;  
                }  
                 private int  selectItem=-1; 
	}	

}

其中红色的为关键的代码。

3、ListView行点击,选中的代码:

AdapterView.OnItemClickListener mLeftListOnItemClick = new AdapterView.OnItemClickListener() {  
        public void onItemClick(AdapterView<?> arg0, View view, int arg2,long arg3) {    
            adapter.setSelectItem(arg2);  
            adapter.notifyDataSetInvalidated();     };

好了我们只要再注册一下ListView的点击事件就可以了!我们还可以添加自己比如更换图片之类!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值