先看效果:未点击
点击时候:
滑动时候:
1.在MainActivity中:
package com.example.administrator.adapter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import java.util.ArrayList; import java.util.List; //模拟假数据,checkbox的选中 public class MainActivity extends AppCompatActivity { private ListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initView() { mListView = (ListView) findViewById(R.id.listView); } private void initData() { List<MyData> list = new ArrayList<>(); for (int i = 0; i < 100; i++) { MyData myData = new MyData(); myData.setName("测试数据" + i); myData.setAddress("北京" + i); list.add(myData); } MyAdapter myAdapter = new MyAdapter(this, list); mListView.setAdapter(myAdapter); } }2.adapter中:
package com.example.administrator.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * Created by Administrator on 2017/10/30. */ public class MyAdapter extends BaseAdapter { private Context context; private List<MyData> list; HashMap<Integer, Boolean> state = new HashMap<Integer, Boolean>(); public MyAdapter(Context context, List<MyData> list) { this.context = context; this.list = list; } @Override public int getCount() { return list == null ? 0 : list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(final int i, View convertView, ViewGroup viewGroup) { ViewHolder holder = null; if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); holder = new ViewHolder(); holder.textView = convertView.findViewById(R.id.textView); holder.address = convertView.findViewById(R.id.address); holder.checkbox = convertView.findViewById(R.id.checkbox); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.textView.setText(list.get(i).getName()); holder.address.setText(list.get(i).getAddress()); holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (isChecked) { state.put(i, isChecked); } else { state.remove(i); } } }); holder.checkbox.setChecked(state.get(i) == null ? false : true); return convertView; } static class ViewHolder { TextView textView; TextView address; CheckBox checkbox; } }3.bean类:
package com.example.administrator.adapter; /** * Created by Administrator on 2017/10/30. */ public class MyData { private String name; private String address; public MyData() { } public MyData(String name, String address) { this.name = name; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }