我想实现的是,单击checkbox的时候,获得checkbox所在行的那个item的值。

解决方案 »

  1.   

    我理解你的意思,我之前做过一个用到这个的应用,里面用的方法是ArrayList<HashMap<String,String>>存储checkbox和item的对应关系,单击checkbox的时候根据对应关系查询被选中的item,然后知道item号就可以获得item中的值。
      

  2.   

    这个重写BaseAdapter就可以了,很好实现的,数据就用ArrayList<E>,一般来说都是将数据封装成对象,贴上部分代码,全部代码在博客里http://blog.csdn.net/cuihao1128/article/details/7668161package cn.com.sligner.listCheckBox;import android.widget.CompoundButton;public interface OnItemCheckedChanged {
    public void onItemCheckedChanged(CompoundButton view,int position, boolean isChecked);
    }
    package cn.com.sligner.listCheckBox;import java.util.ArrayList;import android.content.Context;
    import android.view.LayoutInflater;
    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 android.widget.CompoundButton.OnCheckedChangeListener;public class ListAdapter extends BaseAdapter{
    private Context mContext;
    private ArrayList<Student> list;
    private OnItemCheckedChanged onItemCheckedChangedListener;
    public void setOnItemCheckedChangedListener(
    OnItemCheckedChanged onItemCheckedChangedListener) {
    this.onItemCheckedChangedListener = onItemCheckedChangedListener;
    }
    public ListAdapter(Context mContext, ArrayList<Student> list){
    super();
    this.mContext = mContext;
    this.list = list;
    }
    @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(final int position, final View convertView, ViewGroup parent) {
    View view;
    if(convertView != null){
    view = convertView;
    }else{
    LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = inflater.inflate(R.layout.listitem, null, false);
    }
    TextView text = (TextView)view.findViewById(R.id.itemtext);
    text.setText(list.get(position).getName());
    CheckBox checkBox = (CheckBox)view.findViewById(R.id.itemcheck);
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    onItemCheckedChangedListener.onItemCheckedChanged(buttonView, position, isChecked);
    }
    });
    return view;
    }}
      

  3.   

    1、继承BaseAdapter,写一个自定义Adapter。
    2、绘制checkBox时添加监听
    3、注意添加这个属性android:descendantFocusability="blocksDescendants"