避免listview里面checkbox错乱
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.andy.news2.activity.LiXian">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity方法里的代码:
public class LiXian extends AppCompatActivity {
private ListView lv;
private List<LiXian_Data> list = new ArrayList<>();
private LiXian_Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_li_xian);
//查找控件
lv = (ListView) findViewById(R.id.lv);
for (int i = 0; i < 50; i++) {
LiXian_Data data = new LiXian_Data();
data.name = "item" + i;
list.add(data);
}
adapter = new LiXian_Adapter(this, list);
lv.setAdapter(adapter);
}
class LiXian_Adapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
convertView=View.inflate(context,R.layout.lixian_item,null);
holder=new ViewHolder();
holder.tv=(TextView)convertView.findViewById(R.id.tv);
holder.box=(CheckBox)convertView.findViewById(R.id.box);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
final LiXian_Data dataBean = list.get(position);
holder.tv.setText(dataBean.name);
holder.box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
dataBean.isCheck=isChecked;
}
});
holder.box.setChecked(dataBean.isCheck);
return convertView;
}
class ViewHolder{
TextView tv;
CheckBox box;
}
}
}
离线下载listview里面item的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="kjfhksjfs" />
<CheckBox
android:id="@+id/box"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:checked="true"
android:background="@drawable/checkbox"
android:button="@null"/>
</RelativeLayout>