У мене є перемикач у перегляді переглядача, і дані відображаються в перегляді переглядача після отримання даних з БД. Коли відкривається перегляд recicler, я читаю БД, і якщо поле в БД має значення "Y", я вмикаю перемикач, інакше я вимикаю перемикач. Тепер проблема полягає в тому, що також викликається слухач onCheckedchanged, я хочу, щоб onCheckedChanged викликався лише тоді, коли користувач встановлює комутатор вручну.
При відкритті переглядача виконується подане нижче:
holder.enabledisable.setChecked(messengerRecord.get_is_valid().equalsIgnoreCase("Y"));
Клас ViewHolder:
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);
...................................
...................................
Метод OnConCedChanged, який викликається при відкритті програми reciclerView:
@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);
}
}
У файлі макета:
<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"/>