2012-04-11 10 views
4

So Situation ist: - Listview Reihen haben ein Layout, das eine Checkbox (und ein paar o Textviews) enthält - i die ID auf diese Weise eingestellt .. wie in android.R.layout.simple_list_item_multiple_choiceBenutzerdefinierte Listview Zeile mit Checkbox und Einsparungen Häkchen bei Rotation

<CheckBox 
     android:id="@android:id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content/> 
  • und unter anderen Objekten beteiligt: ​​mein Adapter:

    private Klasse SelectCartAdapter erstreckt ArrayAdapter < SelectCartListItem> ...

  • und mein SelectCartListItem, das Checkable implementiert!

    public class SelectCartListItem implementiert OnClickListener, überprüfbar ...

  • und Listenansicht mit Multiple-Choice-

  • und einigen Einstellungen in Listenansicht onCreate:

    m_ListView.setItemsCanFocus (false); m_ListView.setChoiceMode (ListView.CHOICE_MODE_MULTIPLE);

So offensichtlich möchte ich die Kontrollen der Drehung speichern speichern zu .. alle meine Versuche waren erfolglos gewesen

Dieses keine ids druckt!

@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); 
} 

Also was vermisse ich .. Ideen .. jemand?

UPDATE: meine Lösung: Ich erstellte eine statische Karte in einem neuen Objekt Karte < String, Boolean> .. die meine check/disconnect Situation + statische Methoden zum Hinzufügen/getCheck Zustand enthalten .. es ist nicht so schön, aber funktioniert ...

Antwort

0

// fügen Sie das Array zu dem Bündel

@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); 
} 

und erhalten sie in onRestoreInstanceState()

public void onRestoreInstanceState(Bundle savedInstanceState) { 
  super.onRestoreInstanceState(savedInstanceState); 
 Long [] arr = savedInstanceState.getLongArray("mycheck"); 
} 
+0

Ich denke, das OP gibt an, dass das zurückgegebene Array leer ist, also wird es nicht viel helfen, es in das Bündel zu speichern. –

+0

korrigieren Aleks G! + dass ich mit Fragment und keinem onRestoreInstanceState arbeite ... aber das ist nicht das Problem, das ich onActivityCreated verwende ... Also sollte dies im Fokus sein: m_ListView.getCheckItemIds(); <<< funktioniert nicht – pulancheck1988

0

Sie die TAGs Ansicht einstellen zu 1 wenn aktiviert, wenn deaktiviert, und suchen Sie in Ihrem Adapter nach.

Verwandte Themen