【问题标题】:Custom android checkbox single selection in listview列表视图中的自定义android复选框单选
【发布时间】:2015-10-06 13:17:20
【问题描述】:

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

【问题讨论】:

    标签: android-listview android-checkbox


    【解决方案1】:

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

    1. 创建一个像这样Checkable linear layout tutorial 的可检查类
    2. 在您的 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>

    3. 在您的 onItemClick 中插入此代码

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

    【讨论】:

    • 请给出仅链接的答案。给定的链接将来可能会失效。
    【解决方案2】:
    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;
    }`
    

    【讨论】:

    • 您能详细说明您的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    相关资源
    最近更新 更多