listview中的自定义android复选框单选

时间:2014-02-26 08:50:27

标签: android-listview android-checkbox

我想在listview中设置单选复选框。 在此列表视图中,每行包含2个textview,一个按钮和一个复选框。 textview数据从sqlite数据库中检索,因此,当我选中复选框时,将取消选中另一个复选框,并仅选中列表视图中的复选框。 谢谢大家

2 个答案:

答案 0 :(得分:0)

您可以使用可检查的布局。

  1. 制作一个像Checkable linear layout tutorial
  2. 这样的可检查课程
  3. 在您的xml类中插入可检查的布局,如下所示:

    <?xml version="1.0" encoding="utf-8"?> <com.example.xxx.widget.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp" > //Your checkbox and textview here </com.example.xxx.widget.CheckableLinearLayout>

  4. 在你的onItemClick中插入此代码

       if (itemcheck.isChecked()) {
                    itemcheck.setChecked(true);
                } else {
                    itemcheck.setChecked(false);
                } 
                    itemcheck.setChecked(true);
    

答案 1 :(得分:-1)

holder.checkbox.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {


                if (position != selected && mSelectedRB != null)
                {
                    mSelectedRB.setChecked(false);
                }
                selected = position;
                mSelectedRB = (CheckBox) view;
                //database.deleteAllRecords();
                //database.insertRecord(rowItems.get(position).getLanguageID(), rowItems.get(position).getLanguage(), rowItems.get(position).getImageUrl());
            }
        });

        if(selected != position)
        {
            holder.checkbox.setChecked(false);
        }
        else
        {
            holder.checkbox.setChecked(true);
            if(holder.checkbox != null && holder.checkbox != mSelectedRB)
            {
                mSelectedRB = holder.checkbox;
            }

        }
        //context.startActivity(new Intent(context, LanguageActivity.class));
        convertView.setTag(holder);
    }

    else
    {
        holder = (ViewHolder) convertView.getTag();
    }

    LanguageDetails rowItem = (LanguageDetails) getItem(position);

    holder.checkbox.setText(rowItem.getLanguage());
    return convertView;
}`