listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
listViewAdapter.getIsSelected().put(i, null == listViewAdapter.getIsSelected().get(i) ? true : !listViewAdapter.getIsSelected().get(i));
listViewAdapter.notifyDataSetChanged();
}
});
回写数据
//DeliveryGridViewAdapter
/*public void refreshShowCacheSelect(List<BeanDetailFirst.Deliveryaddresslist> items, String cacheFlagStr){
if(!TextUtils.isEmpty(cacheFlagStr)){
String[] cacheFlagAry = cacheFlagStr.split(";");
if(null != cacheFlagAry && cacheFlagAry.length > 0){
for (int i = 0; i < items.size(); i++){//NumberFormatException ok
boolean isInFlag = false;
for(int j=0;j<cacheFlagAry.length;j++){
if(items.get(i).getAddressId() == StephenTool.stringToInt(cacheFlagAry[j])){
isInFlag = true;
break;
}//end of if
}//end of for
isSelected.put(i, isInFlag);
}//end of for
}else{
for (int i = 0; i < items.size(); i++)isSelected.put(i, items.get(i).getAddressId() == Integer.parseInt(cacheFlagStr));
}
}else{
for (int i = 0; i < items.size(); i++)isSelected.put(i, false);
}
}*/
public class ListViewAdapter extends BaseAdapter {
private HashMap<Integer, Boolean> isSelectedMap;//用来控制checkBox的选中状况
private Context context;
private List<String> items;
private LayoutInflater inflater = null;//用来导入布局
public ListViewAdapter(Context context, List<String> items, String cacheFlagStr) {
this.context = context;
isSelectedMap = new HashMap<Integer, Boolean>();
inflater = LayoutInflater.from(context);
this.items = items;
if(!TextUtils.isEmpty(cacheFlagStr)){
String[] cacheFlagAry = cacheFlagStr.contains(";") ? cacheFlagStr.split(";") : cacheFlagStr.split(",");
if(null != cacheFlagAry && cacheFlagAry.length > 0){
for (int i = 0; i < items.size(); i++){
boolean isInFlag = false;
for(int j=0;j<cacheFlagAry.length;j++){
if((i+1) == StephenTool.stringToInt(cacheFlagAry[j])){
isInFlag = true;
break;
}//end of if
}//end of for
isSelectedMap.put(i, isInFlag ? true : null);
}//end of for
}else{
for (int i = 0; i < items.size(); i++){
boolean isInFlag = (i+1) == Integer.parseInt(cacheFlagStr);
isSelectedMap.put(i, isInFlag ? true : null);
}//end of for
}
}else{
for (int i = 0; i < items.size(); i++)isSelectedMap.put(i, null);
}
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.item_listview_pay_type, null);
holder.tv_floor_num = (TextView) convertView.findViewById(R.id.tv_floor_num);
holder.item_floor_image = (CheckBox) convertView.findViewById(R.id.item_floor_image);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv_floor_num.setText(items.get(position));
if(null == isSelectedMap.get(position)){
holder.tv_floor_num.setTextColor(context.getResources().getColor(R.color.color9));
holder.item_floor_image.setButtonDrawable(R.drawable.transparent);
holder.item_floor_image.setChecked(false);
}else{
holder.tv_floor_num.setTextColor(context.getResources().getColor(R.color.color5));
holder.item_floor_image.setButtonDrawable(R.drawable.check_box_pay_type_selector);
holder.item_floor_image.setChecked(isSelectedMap.get(position));
}
return convertView;
}
public static class ViewHolder {
public TextView tv_floor_num;
public CheckBox item_floor_image;
}
public HashMap<Integer, Boolean> getIsSelectedMap() {
return isSelectedMap;
}
}
<CheckBox
android:id="@+id/item_floor_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/check_box_pay_type_selector"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" />
或是在item根布局加上
android:descendantFocusability="blocksDescendants"
或者在对button或checkbox添加
focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"