2016-12-10 13 views
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は、すべてのクリックを傍受しているようです(長いクリックをしないと、スイッチは切り替わりません)。

答えて

0

作品スイッチ

+0

の状態を得るためにあなたのrecyclerViewアダプタ内部のスイッチのOnCheckChangeListenerを追加しますが、私は何も起こりませんスイッチをクリックしたとき..私は長い間、それがスイッチするために、プレスまたはドラッグのいずれかに持っていますそれは普通のようにタップするだけで、RecyclerViewのクリックが引き継がれます。 –

+0

私はそれがRecyclerViewのクリックを傍受する方法と関係があると信じていますが、他の方法はわかりません。試したMotionEventが動作しませんでした。 –