[解決済み] onCheckedChangedが自動的に呼び出される
2023-06-16 08:47:57
質問
リサイクルビューにスイッチを設置し、DBからデータを取得してリサイクルビューに表示させています。リサイクルビューが開かれたとき、私はDBを読み、DBのフィールドが"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);
...................................
...................................
recyclerViewが開かれたばかりの時に呼ばれるOncheckedChangedメソッドです。
@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);
}
}
Layoutファイルで
<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"/>
どのように解決するのですか?
私たちの誰もがこの問題を抱えているのに、この単純な問題に対するGoogleの公式回答がないのは奇妙です。
最も簡単な方法は、チェックすることです。
buttonView.isPressed()
trueの場合、ユーザーがビューをクリックしたことを意味します。
グローバル変数は必要ありません。
関連
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
[解決済み] FragmentでonActivityResultが呼び出されない
-
[解決済み】すべてのSDKライセンスを自動的に受け入れる
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] ViewPager2でスワイプを無効にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] チェックボックスの値をonCheckChangedをトリガーにせずに変更する
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。