带有 TextView 和 Checkboxes 的 Listview 表现得很奇怪

塞巴斯蒂安·安普埃罗·森崎

我有一个包含 TextViews 和复选框的 ListView 的片段。该 ListView 的每一行都必须是可点击的,当点击时,复选框被选中。但是,当用户选择第一行并且它的复选框被选中然后他滚动时,最后一行的复选框和其他一些复选框也会被选中,这是不想要的。这是getView()我的自定义适配器中的方法的样子:

选项列表适配器.java

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final OptionRowViewHolder holder;
    View row = convertView;
    if (row == null) {
        holder = new OptionRowViewHolder();
        row = LayoutInflater.from(getContext()).inflate(mLayoutId, parent, false);
        holder.setCheckbox((CheckBox) row.findViewById(R.id.checkbox));
        holder.setText((TextView) row.findViewById(R.id.text));
        row.setTag(holder);
    } else {
        holder = (OptionRowViewHolder) row.getTag();
    }

    holder.getText().setText(mOptionsList.get(position).getTitle());
    holder.getCheckbox().setTag(position);
    holder.getCheckbox().setClickable(false);

    if(mOptionsList.get(position).isSelected()){
        if((int)holder.getCheckbox().getTag() == position){
            holder.getCheckbox().setChecked(true);
        }
    }
    row.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LinearLayout layout = (LinearLayout) v;
            CheckBox c = (CheckBox) layout.getChildAt(2);
            int pos = (Integer) c.getTag();
            Option option = getItem(position);
            if(c.isChecked()){
                c.setChecked(false);
                option.setSelected(false);
                mOptionsList.set(pos, option);
            }else{
                c.setChecked(true);
                option.setSelected(true);
                mOptionsList.set(pos, option);
            }
        }
    });
    return row;
}

这是每一行的 XML 布局:

options_list_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" android:layout_width="match_parent"
    android:id="@+id/option_row"
    android:paddingBottom="10dp"
    android:paddingTop="10dp"
    android:paddingLeft="30dp"
    android:paddingStart="30dp"
    android:paddingRight="30dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="text"
        android:textSize="@dimen/tv_text_size"
        android:textColor="#000000"
        android:id="@+id/text" />
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1" />
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleX="1.5"
        android:scaleY="1.5"
        android:id="@+id/checkbox"/>
</LinearLayout>

重要的是整行都是可点击的,而不仅仅是复选框。我真的不知道是什么原因造成的。

阿西姆

您使用在列表的第一个项目上选中但在滚动时不会取消选中其他项目的持有人。你应该像这样修改你的代码。

if(mOptionsList.get(position).isSelected()){
         holder.getCheckbox().setChecked(true);
 }
else
{
         holder.getCheckbox().setChecked(false);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TextView 和 ListView 的奇怪行为

来自分类Dev

带有ViewPager和TextView的奇怪的IllegalStateException

来自分类Dev

C# If 语句和 Random 类表现得很奇怪

来自分类Dev

AlertDialog 中带有 imageView 和 TextView 的 ListView 泄漏内存并获取 Java.Lang.OutOfMemoryError

来自分类Dev

具有URL和TextView的ImageView的Android ListView

来自分类Dev

带有多行TextView的Android ListView空格行

来自分类Dev

带有Switch onCheckedListener的Android ListView很奇怪

来自分类Dev

ListView中有多个TextView?

来自分类Dev

android listview asynctask用于textview和imageview

来自分类Dev

Android-带有CheckBoxes的ListView即使在保存状态时也不会被选中

来自分类Dev

Android:带有TextView和Button的onClick on LinearLayout

来自分类Dev

带有多行和“ android:ellipsize =中间”的Android TextView

来自分类Dev

Android:带有TextView和Button的onClick on LinearLayout

来自分类Dev

带有意图和textView的android新活动

来自分类Dev

对齐imageView和textView(并使带有边框的文本溢出)

来自分类Dev

Godot delta表现得很奇怪

来自分类Dev

OneToOne 的 mappingBy 表现得很奇怪

来自分类Dev

DataGrid comboBoxItems 表现得很奇怪

来自分类Dev

带有ListView和Mysql后端的ORM Lite(android)

来自分类Dev

带有“加载更多”按钮和Circle ProgressBar的ListView

来自分类Dev

带有微调器和单选按钮的Android Listview

来自分类Dev

带有 ConstraintLayout 的 ListView 和 ArrayAdapter 使应用程序崩溃

来自分类Dev

Android - 带有 ImageView、LRUcache 和 ViewHolder 的 Laggy ListView

来自分类Dev

为什么我的图像在淡入阵列中的下一个和最后一个图像时会表现得很奇怪?

来自分类Dev

带有CheckBoxes的JavaFX ComboBox

来自分类Dev

Postgres和bytea列显得很奇怪

来自分类Dev

ListView与android中的textview和背景图像重叠

来自分类Dev

如何在ListView内设置TextView和Button图像的样式

来自分类Dev

关于Textview和Listview显示列表感到困惑

Related 相关文章

  1. 1

    TextView 和 ListView 的奇怪行为

  2. 2

    带有ViewPager和TextView的奇怪的IllegalStateException

  3. 3

    C# If 语句和 Random 类表现得很奇怪

  4. 4

    AlertDialog 中带有 imageView 和 TextView 的 ListView 泄漏内存并获取 Java.Lang.OutOfMemoryError

  5. 5

    具有URL和TextView的ImageView的Android ListView

  6. 6

    带有多行TextView的Android ListView空格行

  7. 7

    带有Switch onCheckedListener的Android ListView很奇怪

  8. 8

    ListView中有多个TextView?

  9. 9

    android listview asynctask用于textview和imageview

  10. 10

    Android-带有CheckBoxes的ListView即使在保存状态时也不会被选中

  11. 11

    Android:带有TextView和Button的onClick on LinearLayout

  12. 12

    带有多行和“ android:ellipsize =中间”的Android TextView

  13. 13

    Android:带有TextView和Button的onClick on LinearLayout

  14. 14

    带有意图和textView的android新活动

  15. 15

    对齐imageView和textView(并使带有边框的文本溢出)

  16. 16

    Godot delta表现得很奇怪

  17. 17

    OneToOne 的 mappingBy 表现得很奇怪

  18. 18

    DataGrid comboBoxItems 表现得很奇怪

  19. 19

    带有ListView和Mysql后端的ORM Lite(android)

  20. 20

    带有“加载更多”按钮和Circle ProgressBar的ListView

  21. 21

    带有微调器和单选按钮的Android Listview

  22. 22

    带有 ConstraintLayout 的 ListView 和 ArrayAdapter 使应用程序崩溃

  23. 23

    Android - 带有 ImageView、LRUcache 和 ViewHolder 的 Laggy ListView

  24. 24

    为什么我的图像在淡入阵列中的下一个和最后一个图像时会表现得很奇怪?

  25. 25

    带有CheckBoxes的JavaFX ComboBox

  26. 26

    Postgres和bytea列显得很奇怪

  27. 27

    ListView与android中的textview和背景图像重叠

  28. 28

    如何在ListView内设置TextView和Button图像的样式

  29. 29

    关于Textview和Listview显示列表感到困惑

热门标签

归档