1
RecyclerView内でSwitchウィジェットを使用して、特定のコンポーネントをアクティブとして設定しようとしています。 RecyclerViewからスイッチの切り替えを検出するにはどうすればよいですか?私の現在のOnItemClickListenerは、Switchウィジェットのクリックもインターセプトします。RecyclerView内でウィジェットを切り替えるClickable
現在のクリックリスナーコード:RecyclerViewため
mRecyclerView.addOnItemTouchListener(
new RecyclerItemListener(getApplicationContext(), mRecyclerView,
new RecyclerItemListener.RecyclerTouchListener() {
public void onClickItem(View v, int position) {
Toast.makeText(MainActivity.this, "Clicked, position " + position + ". Name: " + GlobalData.totalAlarms.get(position).getAlarmName(), Toast.LENGTH_LONG).show();
}
public void onLongClickItem(View v, int position) {
}
}));
}
レイアウト、スイッチを含む:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:focusable="true"
android:clickable="true">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/recycler_mainactivityName"
android:textAppearance="@style/TextAppearance.AppCompat"
android:textSize="16sp"
android:layout_marginTop="15dp"
android:paddingLeft="20dp" />
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/recycler_mainactivityTime"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/recycler_mainactivityDays"
android:paddingLeft="20dp"
android:textSize="12sp"
android:layout_marginBottom="5dp" />
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/recycler_mainactivityTime"
android:paddingTop="2dp"
android:textSize="12sp"
android:paddingLeft="20dp"
android:layout_below="@+id/recycler_mainactivityName"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/recycler_mainactivityActive"
android:paddingRight="20dp"
android:layout_alignBaseline="@+id/recycler_mainactivityTime"
android:layout_alignBottom="@+id/recycler_mainactivityTime"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hapticFeedbackEnabled="true" />
</RelativeLayout>
私はaddOnItemTouchListenerを削除すると、スイッチはクリックで切り替えるんではなく、旗上げを余儀なくされました。..それ以外に、私はどのようにタッチを検出できますか? addOnItemClickListenerは、すべてのクリックを傍受しているようです(長いクリックをしないと、スイッチは切り替わりません)。
の状態を得るためにあなたのrecyclerViewアダプタ内部のスイッチのOnCheckChangeListenerを追加しますが、私は何も起こりませんスイッチをクリックしたとき..私は長い間、それがスイッチするために、プレスまたはドラッグのいずれかに持っていますそれは普通のようにタップするだけで、RecyclerViewのクリックが引き継がれます。 –
私はそれがRecyclerViewのクリックを傍受する方法と関係があると信じていますが、他の方法はわかりません。試したMotionEventが動作しませんでした。 –