Я пытаюсь создать волновой эффект для внешнего RecyclerView, даже если я касаюсь внутреннего RecyclerView.
Кажется, что когда я касаюсь внутреннего RecyclerView, внешний RecyclerView не получает фокус. Так что, нет ряби. Но когда я касаюсь не внутренней области RecyclerView, она имеет волновой эффект.
Итак, я пытаюсь использовать onInterceptTouchEvent()
.
holder.rcvOuterList.addOnItemTouchListener(object: RecyclerView.OnItemTouchListener{
override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {
}
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
val pos = holder.rcvOuterList.getChildAdapterPosition(???) // I don't know how to get the inner recyclerview's item.
Toast.makeText(holder.itemView.context, "Touched!!!!: ${pos}", Toast.LENGTH_SHORT).show()
rv.findViewHolderForAdapterPosition(pos)!!.itemView.dispatchTouchEvent(e)
/**
* true if this OnItemTouchListener wishes to begin intercepting touch events,
false to continue with the current behavior and continue observing future events in the gesture.
*/
return true
}
override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
}
})
Я думаю, что просто получаюpos
в onInterceptTouchEvent()
, все будет хорошо. Как я могу получить pos
?
Или у вас есть идея получше?
ref: https://developer.android.com/reference/android/support/v7/widget/RecyclerView.OnItemTouchListener