如何使用listview和复选框?

时间:2013-05-02 13:40:55

标签: android listview

我的适配器类使用getView方法,如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
 View view = null;
 if (convertView == null) {
   LayoutInflater inflator = context.getLayoutInflater();
   view = inflator.inflate(R.layout.userlist, null);
   final ViewHolder viewHolder = new ViewHolder();
   viewHolder.text2 = (TextView) view.findViewById(R.id.stuname);
   viewHolder.text = (TextView) view.findViewById(R.id.rollno);
   viewHolder.checkbox = (CheckBox) view.findViewById(R.id.cb);
   viewHolder.checkbox
       .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

         @Override
         public void onCheckedChanged(CompoundButton buttonView,
             boolean isChecked) {
           Model element = (Model) viewHolder.checkbox
               .getTag();
           element.setSelected(buttonView.isChecked());
          // Toast.makeText(getContext(), "Checked", 
                  //  Toast.LENGTH_SHORT).show();


         }
       });
   view.setTag(viewHolder);
   viewHolder.checkbox.setTag(list.get(position));
 } else {
   view = convertView;
   ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
 }
 ViewHolder holder = (ViewHolder) view.getTag();
 holder.text.setText(list.get(position).getName());
 holder.text2.setText(list.get(position).getRoll());
 holder.checkbox.setChecked(list.get(position).isSelected());
 return view;
}

这里有一个oncheckedchange听众。

我的问题是如何将列表项已更改的信息传递给我的主要活动?另外,当复选框状态发生变化时,我们如何在主活动中执行某些操作?

2 个答案:

答案 0 :(得分:1)

您可以查看此示例

http://appfulcrum.com/2010/09/12/listview-example-3-simple-multiple-selection-checkboxes/

这有如何在列表视图中使用选择复选框并处理点击操作

您可能还会发现这对于如何使可点击区域如复选框等有帮助,因为listviews实际上不允许您直接选中复选框本身

http://wiresareobsolete.com/wordpress/2011/08/clickable-zones-in-listview-items/

答案 1 :(得分:1)

一个想法是调用CheckBox.setTag(),使用您要保留的数据对其进行标记,并让onCheckedChange侦听器使用CheckBox.getTag()来检索数据。您甚至可以通过XML使用onClick执行此操作。