package com.example.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; /** * @author ieasy360_1 * */ public class MulSelect extends Activity implements OnClickListener { private ListView listview; private Context context; private List<String> array = new ArrayList<String>(); private List<String> selectid = new ArrayList<String>(); private boolean isMulChoice = false; //是否多选 private Adapter adapter; private RelativeLayout layout; private Button cancle,delete; private TextView txtcount; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.select); context = this; listview = (ListView)findViewById(R.id.list); layout = (RelativeLayout)findViewById(R.id.relative); txtcount = (TextView)findViewById(R.id.txtcount); cancle = (Button)findViewById(R.id.cancle); delete = (Button)findViewById(R.id.delete); cancle.setOnClickListener(this); delete.setOnClickListener(this); init(); adapter = new Adapter(context,txtcount); listview.setAdapter(adapter); } void init() { for(int i=0;i<20;i++) { array.add("小明"+i); } } public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.cancle: isMulChoice = false; selectid.clear(); adapter = new Adapter(context,txtcount); listview.setAdapter(adapter); layout.setVisibility(View.INVISIBLE); break; case R.id.delete: isMulChoice =false; for(int i=0;i<selectid.size();i++){ for(int j=0;j<array.size();j++){ if(selectid.get(i).equals(array.get(j))){ array.remove(j); } } } selectid.clear(); adapter = new Adapter(context,txtcount); listview.setAdapter(adapter); layout.setVisibility(View.INVISIBLE); break; default: break; } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle("操作"); } /** * @author ieasy360_1 * 自定义Adapter */ class Adapter extends BaseAdapter{ private Context context; private LayoutInflater inflater=null; private HashMap<Integer, View> mView ; public HashMap<Integer, Integer> visiblecheck ;//用来记录是否显示checkBox public HashMap<Integer, Boolean> ischeck; private TextView txtcount; public Adapter(Context context,TextView txtcount) { this.context = context; this.txtcount = txtcount; inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = new HashMap<Integer, View>(); visiblecheck = new HashMap<Integer, Integer>(); ischeck = new HashMap<Integer, Boolean>(); if(isMulChoice){ for(int i=0;i<array.size();i++){ ischeck.put(i, false); visiblecheck.put(i, CheckBox.VISIBLE); } }else{ for(int i=0;i<array.size();i++) { ischeck.put(i, false); visiblecheck.put(i, CheckBox.INVISIBLE); } } } public int getCount() { // TODO Auto-generated method stub return array.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return array.get(position); } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view = mView.get(position); if(view==null) { view = inflater.inflate(R.layout.item, null); TextView txt = (TextView)view.findViewById(R.id.txtName); final CheckBox ceb = (CheckBox)view.findViewById(R.id.check); txt.setText(array.get(position)); ceb.setChecked(ischeck.get(position)); ceb.setVisibility(visiblecheck.get(position)); view.setOnLongClickListener(new Onlongclick()); view.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if(isMulChoice){ if(ceb.isChecked()){ ceb.setChecked(false); selectid.remove(array.get(position)); }else{ ceb.setChecked(true); selectid.add(array.get(position)); } txtcount.setText("共选择了"+selectid.size()+"项"); }else { Toast.makeText(context, "点击了"+array.get(position), Toast.LENGTH_LONG).show(); } } }); mView.put(position, view); } return view; } class Onlongclick implements OnLongClickListener{ public boolean onLongClick(View v) { // TODO Auto-generated method stub isMulChoice = true; selectid.clear(); layout.setVisibility(View.VISIBLE); for(int i=0;i<array.size();i++) { adapter.visiblecheck.put(i, CheckBox.VISIBLE); } adapter = new Adapter(context,txtcount); listview.setAdapter(adapter); return true; } } } }