Ich habe einen Schalter in einer Recyclingansicht und Daten werden in der Recyclingansicht angezeigt, nachdem Daten aus der Datenbank abgerufen wurden. Wenn die Recycling-Ansicht geöffnet wird, lese ich DB und wenn ein Feld in DB "Y" ist, aktiviere ich den Switch oder deaktiviere den Switch. Jetzt ist das Problem damit verbunden, dass auch der onCheckedchanged-Listener aufgerufen wird. Ich möchte, dass onCheckedChanged nur aufgerufen wird, wenn der Benutzer den Schalter manuell einstellt.
Beim Öffnen wird die folgende Recycling-Ansicht ausgeführt:
holder.enabledisable.setChecked(messengerRecord.get_is_valid().equalsIgnoreCase("Y"));
ViewHolder-Klasse:
public class viewHolder extends RecyclerView.ViewHolder implements CompoundButton.OnCheckedChangeListener{
public SwitchCompat enabledisable;
public viewHolder(View v) {
enabledisable = (SwitchCompat) v.findViewById(R.id.enabledisable);
enabledisable.setOnCheckedChangeListener(this);
...................................
...................................
OncheckedChanged-Methode, die aufgerufen wird, wenn die recyclerView gerade geöffnet wird:
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.v("ranjith","called oncheckedchanged");
MessengerRecord rec;
rec = dbHelper.getRecord(descview.getText().toString());
switch (buttonView.getId()) {
case R.id.enabledisable:
if (isChecked) {
rec.set_is_valid("Y");
dbHelper.updateRecord(rec);
}
}
In der Layoutdatei:
<android.support.v7.widget.SwitchCompat
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:id="@+id/enabledisable"
android:layout_alignRight="@+id/textview_to"
android:layout_alignEnd="@+id/textview_to"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>