android - 自定义 listView 行,带有复选框和旋转时的保存复选标记

标签 android listview checkbox

所以情况是: - ListView 行的布局包含一个复选框(和几个 TextView ) - 我以这种方式设置 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/>
  • 和下面涉及的其他对象:我的适配器:

    私有(private)类 SelectCartAdapter 扩展 ArrayAdapter ...

  • 我的 SelectCartListItem 实现了 Checkable!

    公共(public)类 SelectCartListItem 实现 OnClickListener, Checkable ...

  • 多选 ListView

  • 以及 onCreate 中的一些 ListView 设置:

    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 中创建了一个静态映射..它将包含我的检查/取消检查情况 + 添加/获取检查状态的静态方法..它不是那么漂亮但是有效...

最佳答案

//将数组添加到包中

@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");
}

关于android - 自定义 listView 行,带有复选框和旋转时的保存复选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10101885/

相关文章:

Android - 启动 Intent 问题

.net - 复选框 Gridview 启用和禁用

javascript - 更改 HTML 复选框选中属性

java - 如何在 Android Studio 中更新 Cordova 版本

android - Youtube 获取上传的视频列表。找不到文件错误

c# - MVVM listview 绑定(bind)到字典 selecteditem 问题

android listView 行高

javascript - 单击复选框时如何更改某些文本?

java - viewHolder.setItemClickListener() 不起作用

listview - Flutter - 为每个 ListView 项运行异步函数