带有复选框的Android列表视图?

Nik*_*ddy 5 android listview

我正在开发使用具有的复选框列表视图的应用程序,考虑有10 itemslist-view项目,默认情况下该复选框被检查,到现在为止,任何东西都工作正常,我在这里是我的问题,当我取消任何入住列表视图中的框整个列表视图需要刷新.

Par*_*ani 13

Nikhil只记得定义一个自定义适配器是一次性练习,一旦你正确定义和理解它,你就可以自定义任何视图,如ListView,GridView,Gallery,Spinner.所以请仔细阅读以下答案.

要使用CheckBox(或任何View)定义ListView,您必须定义自己的自定义适配器.要定义自定义适配器,请执行以下步骤:

  1. 定义自定义行文件(代表列表视图的每个项目)
  2. 定义适配器类并扩展BaseAdapter.
  3. 在此适配器类的getView()方法内膨胀上面的行xml文件.

在你的情况下,

第1步:(定义行xml文件)

<RelativeLayout>
   <TextView>
   <CheckBox>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

第2步和第3步:(定义自定义适配器类)

public class MyListViewAdapter extends BaseAdapter
{
  ....
  ....


   static class ViewHolder {
        protected TextView text;
        protected CheckBox checkbox;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.rowbuttonlayout, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.text = (TextView) view.findViewById(R.id.label);
            viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
            viewHolder.checkbox
                    .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                        @Override
                        public void onCheckedChanged(CompoundButton buttonView,
                                boolean isChecked) {
                            Model element = (Model) viewHolder.checkbox
                                    .getTag();
                            element.setSelected(buttonView.isChecked());

                        }
                    });
            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.checkbox.setChecked(list.get(position).isSelected());


.......
.......
}
Run Code Online (Sandbox Code Playgroud)