1.创建实体类时,多添加一条Boolean Checked
2. tag 运用
package com.smarttrans.phone.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.TextView; import com.smarttrans.phone.R; import com.smarttrans.phone.bean.BrandItemInfo; import java.util.LinkedList; import java.util.List; /** * Created by ccj on 2015/12/29. */ public class DiaLogAdapter extends BaseAdapter { private LinkedList<String> selectedBrands; private Context context; private List<BrandItemInfo> brandInfoList; private final String TAG = "disorderlist"; public DiaLogAdapter(Context context, List<BrandItemInfo> list) { this.context = context; brandInfoList = list; selectedBrands = new LinkedList<>(); } @Override public int getCount() { return brandInfoList.size(); } @Override public Object getItem(int i) { return null != brandInfoList ? brandInfoList.get(i) : null; } @Override public long getItemId(int i) { return i; } private class ViewHolder { private TextView brandChNameTv; private CheckBox followCheckBox; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder = null; BrandItemInfo brandItemInfo = (BrandItemInfo) getItem(i); if (null == view) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.dialog_list_item, null); viewHolder = new ViewHolder(); LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.ll_list_item); viewHolder.brandChNameTv = (TextView) view.findViewById(R.id.tv_item); viewHolder.followCheckBox = (CheckBox) view.findViewById(R.id.cb_item); final ViewHolder finalViewHolder1 = viewHolder; final ViewHolder finalViewHolder = viewHolder; viewHolder.followCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { BrandItemInfo info = (BrandItemInfo) finalViewHolder.followCheckBox.getTag();//取出缓存中的数据,设定他的选中状态 info.setSelected(compoundButton.isChecked()); } }); view.setTag(viewHolder);//将viewholder给Tag } else { viewHolder = (ViewHolder) view.getTag(); }viewHolder.followCheckBox.setTag(brandItemInfo);//!!!!将项 的对象保存到 CheckBox的tag中viewHolder.brandChNameTv.setText(brandItemInfo.getBrandChName()); //最后设定 view中的数据 viewHolder.followCheckBox.setChecked(brandItemInfo.isSelected()); return view; } }
</pre><pre>