4

状況は次のとおりです: -リストビュー行には、チェックボックス(およびいくつかのテキストビュー)を含むレイアウトがあります-私はこの方法で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/>
  • および関連する他のオブジェクトの下: my adapter:

    プライベート クラス SelectCartAdapter は ArrayAdapter <SelectCartListItem> を拡張します ...

  • そして、Checkable! を実装する私の SelectCartListItem です。

    public class 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> 内に静的マップを作成しました。これには、チェック/チェック解除の状況 + 追加/getCheck 状態への静的メソッドが含まれます。

4

2 に答える 2

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");
}
于 2012-04-11T07:54:56.237 に答える
0

チェックされている場合はビューの TAG を 1 に設定し、チェックされていない場合は 0 に設定し、アダプタ内で調べることができます。

于 2012-04-24T07:56:50.557 に答える