【问题标题】:Android: ListView CheckBox checked unintentionallyAndroid:ListView CheckBox 无意中选中
【发布时间】:2011-05-18 17:01:03
【问题描述】:

我有一个 ListView,它位于页眉栏下方和页脚栏上方。 ListView 的每一行都包含一个 LinearLayout 并排有一个 CheckBox 和 TextView。现在,当我一次可以显示更多行时,您当然可以向下或向上滚动。但是,一旦我向下或向上滚动,就会自动检查第一个和/或最后一个 CheckBox。我的手指离您选择复选框的位置很远。这可能是什么原因造成的? 注意我在这里使用了代码:http://www.anddev.org/checkbox_text_list___extension_of_iconified_text_tutorial-t771.html

【问题讨论】:

    标签: android checkbox scroll android-listview


    【解决方案1】:

    简要查看相关链接下提供的代码,我可以看到以下内容:

     public View getView(int position, View convertView, ViewGroup parent){
          CheckBoxifiedTextView btv;
          if (convertView == null) {
               btv = new CheckBoxifiedTextView(mContext, mItems.get(position));
          } else { // Reuse/Overwrite the View passed
               // We are assuming(!) that it is castable!
               CheckBoxifiedText src = mItems.get(position);
               btv = (CheckBoxifiedTextView) convertView;
               btv.setCheckBoxState(src.getChecked());  // set checked state
               btv = (CheckBoxifiedTextView) convertView;
               btv.setText(mItems.get(position).getText());
          }
          return btv;
     }
    

    如您所见,视图在滚动期间被重用,并且复选框状态是使用方法 setCheckBoxState 设置的。 然后在CheckBoxifiedTextView中可以找到:

     public void setCheckBoxState(boolean bool)
     {
         mCheckBox.setChecked(mCheckBoxText.getChecked());
         mCheckBoxText.setChecked(true); // <-- HERE !
     } 
    

    第 4 行中的 setChecked(true) 硬编码可能会导致问题。

    【讨论】:

    • 谢谢 Benni,我去看看。嗯,上面引用的页面上的代码没有硬编码。但它必须在下载的代码中......
    • 是的,我正在查看下载的代码,因为页面上的代码不包含所有功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多