Gli elementi selezionati di Listview non sono presenti dopo lo scorrimento

Ho creato una listview con la visualizzazione di text e la casella di controllo. Tuttavia, dopo aver scorciato l'elenco verso il basso (o in su) tutti gli elementi selezionati nell'elenco non vengono selezionati. Come effettuare le caselle di controllo selezionate mantenere il loro stato dopo lo scorrimento?

  • Controllo onclicklistener in testview abilitato per autolink
  • Confronto tra le immagini Bitmap in Android
  • SSLProtocolException durante la lettura di risposte https sui dispositivi Android 2.3.3
  • Java - Android - Split Attività / class in più file per una migliore organizzazione (soluzione)
  • Rotazione di FloatingActionButton
  • esistenza del parametro (vista visualizzazione)
  • Perché utilizzare strings.xml in Android?
  • Android LocationClient.getLastLocation () restituisce la posizione vecchia e imprecisa con un nuovo timestamp
  • Le animazioni dei pulsanti Android sincronizzano con il timing
  • ho ricevuto questo errore: Avviso: è necessaria la versione 2.10 di Gradle
  • Come controllare la connettività internet continuamente in background durante l'esecuzione dell'applicazione android
  • ArrayIndexOutOfBoundsException in ViewDragHelper in Android
  • 3 Solutions collect form web for “Gli elementi selezionati di Listview non sono presenti dopo lo scorrimento”

    ListView ricicla le visualizzazioni each volta che viene scorciato. Ecco perché le caselle di controllo non conservano i loro stati.

    Per eseguire la tua attività:

    • Memorizzare gli elementi selezionati in un arrays.
    • Quando si fa clic su una casella di controllo nell'elenco di visualizzazione, modificare il valore di quel particolare elemento nell'arrays.
    • All'interno del metodo getView, seleziona o deseleziona le caselle di controllo leggendo i valori dell'arrays.

    In questo modo le caselle di controllo conserveranno i loro stati. Spero che questo sia chiaro.

    È necessario salvare lo stato della tua list quando apport modifiche nell'elenco. Devi mantenere un arraysList dei tuoi oggetti controllati. Questo post potrebbe rivelarsi più utile a questo proposito.

    È ansible utilizzare questa class di adattatori e get l'ID di casella selezionata utilizzando listview.getPositionForView(cBox)

      public class aAdapter extends SimpleAdapter { //private List<Table> tables; SharedPreferences prefs; private Activity activity; String val = ""; //@SuppressWarnings("unchecked") public aAdapter(Activity context, List<? extends Map<String, String>> tables, int resource, String[] from, int[] to) { super(context, tables, resource, from, to); //this.tables = (List<Table>) tables; activity = context; } public View getView(final int position, final View convertView, ViewGroup parent) { View row = super.getView(position, convertView, parent); if (row == null) { LayoutInflater inflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); row = inflater.inflate(R.layout.reports_list, null); } final CheckBox cBox=(CheckBox)row.findViewById(R.id.cb1); if(bulkflag) { cBox.setVisibility(View.VISIBLE); } else { cBox.setVisibility(View.GONE); } cBox.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(cBox.isChecked()) { //selectedIds.add(recIdArr.get(reportslistview.getPositionForView(cBox))); System.out.println("position "+reportslistview.getPositionForView(cBox)+" Checked"); } else { System.out.println("position "+reportslistview.getPositionForView(cBox)+" UnChecked"); } } }); return row; } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.