【Android基础篇】SimpleAdapter重写时响应CheckBox复选框状态改

在使用自定义ListView时,往往需要自己基于SimpleAdapter重写适配器,承接上篇在自定义Adapter实现按钮响应,今天实现响应CheckBox。 和上篇一样,我们需要在重写的MySimpleAdapter中添加一个MainActivity的变量,用于调用MainActivity的改变List

public void setChecked(int position,boolean m){,Objecttoday_plan_listItems.get(position);map.put(“check”, m);listItems.set(position, map);listView.invalidate(); }

listItems是List

package com.plan;import java.util.List;import java.util.Map;import android.content.Context;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.Toast;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.SimpleAdapter;import com.example.plan.R;{MainActivity context;public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {super(context, data, resource, from, to);this.context = (MainActivity) context;// TODO Auto-generated constructor stub}public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubView v = super.getView(position, convertView, parent);Button btn=(Button) v.findViewById(R.id.button1);final CheckBox check = (CheckBox)v.findViewById(R.id.checkBox_complish);final int p = position;Log.d(“Position”, Integer.toString(position));//复选框的响应check.setOnClickListener(new OnClickListener(){(View v) {// TODO Auto-generated method stubString s = (p+”:”+check.isChecked());Toast.makeText(context, s, 2000).show();if(check.isChecked()){context.setChecked(p, true);}else if(!check.isChecked()){context.setChecked(p, false);}}});btn.setOnClickListener(new OnClickListener() {(View v) {// TODO Auto-generated method stub//Toast.makeText(context, “删除”+Integer.toString(p),2000).show();context.deleteItemsTodayPlanList(p);}});return v;}}

复选框check响应的原理是监听它的OnClickListner事件,,原状态为false,点击后就为true。 注意,在这里最好别监听OnCheckedChangeListener事件,因为一旦使用这个监听器,每次的ListView刷新都是一次状态改变,处理起来会很麻烦。

不然你大概会一直好奇和不甘吧——

【Android基础篇】SimpleAdapter重写时响应CheckBox复选框状态改

相关文章:

你感兴趣的文章:

标签云: