自定义列表查看行与复选框&轮流上的储蓄检查标记

时间:2012-04-11 07:47:14

标签: android listview checkbox

所以情况是: - 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状态..它不是很漂亮但是有效...

2 个答案:

答案 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,并在适配器内查找。