我在使用Base Adapter的列表中使用自定义复选框.
问题是当我单击复选框以取消选中时,其他复选框自动取消选中.
假设我单击0位置的复选框,然后另一个具有第5位置的复选框将自动取消选中.
public View getView( int position, View convertView, ViewGroup parent) { final ViewHolder holder = new ViewHolder(); if (convertView == null) { convertView = mInflater.inflate(R.layout.socket_layer, null); } holder.checkBox = (ImageView) convertView.findViewById(R.id.checkBox_SocketFilter); holder.filter_name=(TextView)convertView.findViewById(R.id.filter_name); holder.filter_name.setText(rowItems.get(position)); holder.checkBox.setTag(position); holder.onoff.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = (Integer) v.getTag(); if(!selectedItems.get(position)){ selectedItems.put(position,true); if(PrefUtils.socketCheck[position].equals(true)) { holder.onoff.setImageResource(R.drawable.offf); PrefUtils.socketCheck[position]=false; selectedItems.delete(position); } else if(PrefUtils.socketCheck[position].equals(false)){ holder.onoff.setImageResource(R.drawable.onnn); PrefUtils.socketCheck[position]=true; selectedItems.delete(position); } }else{ selectedItems.delete(position); } } }); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); }
请帮我.
修改你的代码这样的事情.
在设置单击侦听器之前,在onOff按钮中将位置添加为标记
holder.onoff.setTag(position);
并在 onClick()
int position = (Integer) v.getTag();
然后在里面使用这个位置变量onClick()
进行操作.