【问题标题】:Custom listView row with checkbox & savings check marks on rotation自定义 listView 行,带有复选框和旋转时的储蓄复选标记
【发布时间】:2012-04-23 12:27:01
【问题描述】:

所以情况是: - listview 行的布局包含一个复选框(和几个 o 文本视图) - 我以这种方式设置 id.. 就像在 android.R.layout.simple_list_item_multiple_choice 中一样

<CheckBox 
       android:id="@android:id/text1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content/>
  • 以下涉及的其他对象:我的适配器:

    私有类 SelectCartAdapter 扩展 ArrayAdapter ...

  • 还有我的实现 Checkable 的 SelectCartListItem!

    公共类 SelectCartListItem 实现 OnClickListener、Checkable ...

  • 和多选的列表视图

  • 以及 onCreate 中的一些列表视图设置:

    m_ListView.setItemsCanFocus(false); m_ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

所以显然我想保存轮换检查..我所有的试验都没有成功

这不打印任何 ID!

@Override
public void onSaveInstanceState(Bundle args) {
    Log.d(">>>onSaveInstanceState","<<<<<<<<<<<<<<<<<<<<<<<<<");
    long[] toSave = m_ListView.getCheckItemIds();//TODO: save!
    for(int i=0;i<toSave.length;i++){
        Log.d(">>>>"+i+"]",toSave[i]+"");
    }
    super.onSaveInstanceState(args);
}

那么我错过了什么......想法......任何人?

更新:我的解决方案:我在一个新对象 Map.. 中创建了一个静态映射,其中将包含我的检查/取消检查情况 + 添加/获取检查状态的静态方法.. 它不是那么漂亮但可以工作...

【问题讨论】:

    标签: android listview checkbox


    【解决方案1】:

    //将数组添加到bundle中

    @Override
    public void onSaveInstanceState(Bundle args) {
        Log.d(">>>onSaveInstanceState","<<<<<<<<<<<<<<<<<<<<<<<<<");
        long[] toSave = m_ListView.getCheckItemIds();//TODO: save!
         //add it to the bundle 
       args.putLongArray("mycheck",toSave );
        for(int i=0;i<toSave.length;i++){
            Log.d(">>>>"+i+"]",toSave[i]+"");
        }
        super.onSaveInstanceState(args);
    }
    

    并让他们进入onRestoreInstanceState()

    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);
     Long [] arr = savedInstanceState.getLongArray("mycheck");
    }
    

    【讨论】:

    • 我认为 OP 声明返回的数组是空的,所以将它保存到包中并没有多大帮助。
    • 正确的 Aleks G! +我正在使用片段并且没有onRestoreInstanceState ...但这不是我使用onActivityCreated的问题...所以这应该是重点:m_ListView.getCheckItemIds();
    【解决方案2】:

    如果选中,则可以将视图的 TAG 设置为 1,如果未选中,则可以将其设置为 0,然后在适配器中查找它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2015-06-27
      • 1970-01-01
      • 2013-09-02
      • 2014-05-20
      相关资源
      最近更新 更多