4

所以情况是: - listview 行的布局包含一个复选框(和几个 o 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 <SelectCartListItem> ...

  • 和我的实现 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<String, Boolean>.. 中创建了一个静态地图,其中将包含我的检查/取消检查情况 + 添加/获取检查状态的静态方法.. 它不是那么漂亮,但可以工作......

4

2 回答 2

0

//将数组添加到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");
}
于 2012-04-11T07:54:56.237 回答
0

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

于 2012-04-24T07:56:50.557 回答