ListView选中后错位问题及解决方案(含单选和多选)
2015-03-17 22:51
239 查看
一、单选错位
1、在监听处设置选中的位置@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { <strong>selectPosition = position;</strong> adapter.notifyDataSetChanged(); }
2、在Adapter中 根据position设置选中状态
if (position != selectPosition) { holder.selItem.setChecked(false); } else { holder.selItem.setChecked(true); }
二、多选错位
思路:为每一条item设置状态之,默认为false代码:在Adapter中:
package com.qloudfin.jpaybusiness.pos; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ListAdapter; import android.widget.TextView; import com.qloudfin.jpaywallet.R; public class AddCouponAdapter extends BaseAdapter implements ListAdapter { private LayoutInflater inflater; private List<AddCouponBean> list; final private Map<Integer, Map<String, Object>> maps; public static ArrayList<String> strList; public static ArrayList<String> strList1; private int CheckBtn = -1; public AddCouponAdapter(Context context, ArrayList<AddCouponBean> list2) { this.inflater = LayoutInflater.from(context); this.list = list2; strList = new ArrayList<String>(); strList1 = new ArrayList<String>(); //为每个item设置初始状态为false</strong> maps = new HashMap<Integer, Map<String, Object>>(); Map<String, Object> map; for (int i = 0; i < list.size(); i++) { map = new HashMap<String, Object>(); map.put("status", false); maps.put(i, map);</span> } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.item_add_coupon, null); holder = new ViewHolder(); holder.addCouponType = (TextView) convertView .findViewById(R.id.tv_addcoupon_type); holder.cb = (CheckBox) convertView.findViewById(R.id.rb_add); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } AddCouponBean info = list.get(position); holder.addCouponType.setText(info.getAddCoupon_type()); maps.get(position).put("data", info.getAddCoupon_type());
//设置选择的监听,更新选择状态 holder.cb.setChecked((Boolean) maps.get(position).get("status")); holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { maps.get(position).put("status", isChecked); if (isChecked) { strList.add((String) maps.get(position).get("data")); } else { strList.remove((String) maps.get(position).get("data")); } } }); return convertView; } private class ViewHolder { public TextView addCouponType; // public CheckBox rb; public CheckBox cb; } }
相关文章推荐
- Android在listview添加checkbox实现单选多选操作问题
- Android在listview添加checkbox实现单选多选操作问题
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
- listview中item 有checkbox多选防止滑动 listview页面 出现checkbox错位问题
- 解决Android在listview添加checkbox实现单选多选操作问题
- 解决Android在listview添加checkbox实现单选多选操作问题
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
- listview中item 有checkbox多选防止滑动 listview页面 出现checkbox错位问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- 解决ListView上多选和单选界面上显示错乱的问题
- ListView,GridView,单选默认选中,单选和多选盖布效果
- Android在listview添加checkbox实现单选多选操作问题
- Android在listview添加checkbox实现单选多选操作问题
- cell 复用问题 cell中控件单选,多选,带标签图的不可选中
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
- listview中item 有checkbox多选防止滑动 listview页面 出现checkbox错位问题
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案