ListView的固定选中效果

项目中需要用到ListView的高亮选中,并且保持选中状态的功能。 走了不少弯路,总结一下。


展示一下ListView的选中需求, 选中,保持高亮。



需要注意几点:

1. adapter中的item所在的layout,不能设置背景,否则无法选中

2. item所在的UI中,不能出现抢占焦点的UI, 不然无法选中,如果存在,则需要去掉其focus相关的属性



                <EditText
                    android:id="@+id/order_number_history"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:layout_marginTop="5dp"
                    android:enabled="true"
                    android:gravity="center"
                    android:inputType="number"
                    android:focusableInTouchMode="false"  这里
                    android:focusable="false"   这里
                    android:textColor="#000000" />



关键代码(根据选中的position,将背景颜色修改即可):

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		Log.i("======", position + "");
		ViewHolder mHolder = null;
		if (convertView == null) {
			convertView = mInflater.inflate(R.layout.gv_orderhistory_item, null);
			mHolder = new ViewHolder();
			convertView.setTag(mHolder);
			mHolder.tv_foodname_history = (TextView) convertView.findViewById(R.id.tv_foodname_history);
		} else {
			mHolder=(ViewHolder) convertView.getTag();
		}
		String  or = list.get(position);
		mHolder.tv_foodname_history.setText(or);
		mHolder.index = position;
		updateView(convertView);
		return convertView;
	}
	
	private void updateView(View convertView)
	{
		
		ViewHolder mHolder = (ViewHolder) convertView.getTag();
		int tagIdx = mHolder.index;
		if (tagIdx != currentSelIdx)
		{
			convertView.setBackgroundResource(R.drawable.historyorder_lv_item_normal);
		}
		else
		{
			convertView.setBackgroundResource(R.drawable.historyorder_lv_item_selected);
		}
	}
	
	
	private static class ViewHolder {
		TextView tv_foodname_history; //菜名
		int index;
	}

下载地址


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页