大家应该都在淘宝买过东西吧,购物车里面有个功能,就是点击编辑之后可以选择多个商品结算或者删除。最近也正好用到这个功能,一开始也不会写,到处找,找到一个比较好的,在此记录下来。
1.其实最重要的就是adapter了,下面来看一下adapter。
public class InformationListAdapter extends BaseAdapter {
private List<InformationResp.ResultMsgBean.DataBean> mList;//数据列表
private List<InformationResp.ResultMsgBean.DataBean> selectList;//选中的item列表
private LayoutInflater inflater = null;
private InformationActivity activity;
public InformationListAdapter(InformationActivity activity) {
inflater = LayoutInflater.from(activity);
this.activity=activity;
}
/**
* 拿到数据
*
* @param list
*/
public void setList(List<InformationResp.ResultMsgBean.DataBean> list) {
this.mList = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mList == null ? 0 : mList.size();
}
@Override
public Object getItem(int i) {
return mList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
ViewHolder holder = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_list_information, null);
holder = new ViewHolder();
holder.time = (TextView) convertView.findViewById(R.id.tv_time);
holder.content = (TextView) convertView.findViewById(R.id.tv_content);
holder.line1 = (View) convertView.findViewById(R.id.line1);
holder.line2 = (View) convertView.findViewById(R.id.line2);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.check_box);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
InformationResp.ResultMsgBean.DataBean bean = (InformationResp.ResultMsgBean.DataBean) getItem(position);
holder.content.setText(bean.getMessageText());
//主要的就在这里
if (getSelectedData().contains(bean)) {
holder.checkBox.setChecked(true);
} else {
holder.checkBox.setChecked(false);
}
holder.checkBox.setTag(position);
holder.checkBox.setOnClickListener(onCheckChange);
return convertView;
}
class ViewHolder {
TextView content;//内容
TextView time;//时间
// TextView delete;
View line1;
View line2;
CheckBox checkBox;
}
//checkBox点击
View.OnClickListener onCheckChange=new View.OnClickListener() {
@Override
public void onClick(View v) {
InformationResp.ResultMsgBean.DataBean item = (InformationResp.ResultMsgBean.DataBean)
getItem(Integer.parseInt(v.getTag().toString()));
if (getSelectedData().contains(item)) {
getSelectedData().remove(item);
} else {
getSelectedData().add(item);
}
}
};
public List<InformationResp.ResultMsgBean.DataBean> getSelectedData() {
if (selectList == null) {
selectList = new ArrayList<>();
}
return selectList;
}
}
2.这是activity,由于代码不能公开,只粘贴主要的部分。
private List<InformationResp.ResultMsgBean.DataBean> mList;
//全选点击;allSelect是个全选的checkbox
allSelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (allSelect.isChecked()) {
mAdapter.getSelectedData().clear();
mAdapter.getSelectedData().addAll(getList());
} else {
mAdapter.getSelectedData().clear();
}
mAdapter.notifyDataSetChanged();
}
});
//删除点击。deleteBtn是Button
deleteBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mAdapter.getSelectedData().size() > 0) {
//在这里可以删除选中的item
getList().removeAll(mAdapter.getSelectedData());
} else {
toast("你还没有选中要删除的信息!");
}
}
});
/**
* 得到list
*
* @return
*/
public List<InformationResp.ResultMsgBean.DataBean> getList() {
if (mList == null) {
mList = new ArrayList<>();
}
return mList;
}