所以情况是: - listview行的布局包含一个复选框(以及几个textviews) - 我这样设置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&lt; SelectCartListItem&gt; ...
和我的SelectCartListItem实现了Checkable!
公共类SelectCartListItem实现OnClickListener,Checkable ...
和带有多项选择的列表视图
和onCreate中的一些listview设置:
m_ListView.setItemsCanFocus(假); 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&lt; String,Boolean&gt; ..中创建了一个静态地图,它将包含我的检查/取消检查情况+静态方法来添加/ getCheck状态..它不是很漂亮但是有效...
答案 0 :(得分:0)
//将数组添加到包
@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");
}
答案 1 :(得分:0)
如果未选中则选中0,您可以将视图的TAG设置为1,并在适配器内查找。