自定义 listView 行,带有复选框和旋转时的储蓄复选标记

Posted

技术标签:

【中文标题】自定义 listView 行,带有复选框和旋转时的储蓄复选标记【英文标题】:Custom listView row with checkbox & savings check marks on rotation 【发布时间】: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_
       android:layout_>>>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.. 中创建了一个静态映射,其中将包含我的检查/取消检查情况 + 添加/获取检查状态的静态方法.. 它不是那么漂亮但可以工作...

【问题讨论】:

【参考方案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,然后在适配器中查找它。

【讨论】:

以上是关于自定义 listView 行,带有复选框和旋转时的储蓄复选标记的主要内容,如果未能解决你的问题,请参考以下文章

带有复选框和自定义适配器的 ListView,片段无法正常工作

带有复选框的自定义 ListView 检查未选中的项目

滚动自定义 ListView 时,复选框值发生变化

如何使用复选框和自定义适配器从 Listview 中获取选定的列表项?

使用android中的自定义arrayadapter在listview中使用复选框检查后如何删除多个项目?

自定义列表视图,带有jQuery Mobile中的复选框,图像和按钮