所以情况是: - 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/