Domanda

Ho una casella di controllo contenente casella di controllo e ho aggiunto un viewbinder al mio adattatore e in questo viewbinder ho aggiunto un listener di stato onchecked alle mie bollette e nel listener di stato onchecked ho scritto questo codice: Ma con questo codice quando la casella di controllo è stata effettuata controllata, è stato salvato nel database, quando strozzerò attraverso ListView viene deselezionata tutto l'occasione accede al codice dell'improvviso e deseleziona la casella di controllo e salvalo nel database.

Quindi l'ho risolto con l'aggiunta di un listener onclick alla casella di controllo invece del listener di stato di Onchange:

public void onclick(View view) {
         String id=view.getTag()+"";
            int buttonid=Integer.valueOf(id);               
            if(((CompoundButton) view).isChecked()==true){  
                Log.d("checked","checked");
            myDbHelper.MarkAsFavorite(buttonid);

            }

            else if(((CompoundButton) view).isChecked()==false){
                Log.d("unchecked","unchecked");
                myDbHelper.UnMarkAsFavorite(buttonid);
            }

             cu=myDbHelper.GetCursor();
             adapter.swapCursor(cu);
     }
.

e non ho più problemi.Ma volevo sapere perché questo Change State Listener ha agito in quel modo?

È stato utile?

Soluzione

Si ha questo checkbox all'interno di ListView in quanto ListView riutilizzi le viste per l'efficienza stessa oggetto di controllo può essere fornita a più elementi di ListView e quando viene controllato per la stessa casella di controllo è deselezionata per un altro.

Altri suggerimenti

Questo listener di Modifica stato ha agito in quel modo solo quando si scorre una serie di listView poiché la chiamata GetView ha nuovamente modifica lo stato della casella di controllo selezionato pertanto checkchangedListner Call che modifica il valore nel database.E quando hai usato onClick il tuo problema risolto perché si modifica ListView View onClick Event non incendi che non modifica il valore del tuo database.

È possibile risolvere questo problema utilizzando il portavelatori in ListView.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top