本篇文章主要介绍了"android开发游记:RecyclerView无法添加onItemClickListener最佳的高效解决方案",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下:
【转自:http://blog.csdn.net/liaoinstan/article/details/51200600】
自从RecyclerView发布以...
//单击事件。用来判定该次点击是SingleTap而不是DoubleTap,//如果连续点击两次就是DoubleTap手势,如果只点击一次,//系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,//然后触发SingleTapConfirmed事件publicbooleanonSingleTapConfirmed(MotionEvent e);
//双击事件publicbooleanonDoubleTap(MotionEvent e);
//双击间隔中发生的动作。指触发onDoubleTap以后,在双击之间发生的其它动作publicbooleanonDoubleTapEvent(MotionEvent e);
可以看出OnGestureListener主要回调各种单击事件,而OnDoubleTapListener回调各种双击事件。而我们需要处理的点击事件其实就是上面的:onSingleTapUp()
值得一提的是sdk 还提供了一个外部类SimpleOnGestureListener,这个类实现了上面两个接口的所有方法,但全都是空实现,函数体里什么也没写,其中就是把上面两个接口合并一下,给出默认的空实现,这样继承SimpleOnGestureListener的时候就不用实现每一个方法了,既然如此,那么我们定义一个类去继承它吧。
定义一个ItemTouchHelperGestureListener 继承自SimpleOnGestureListener ,实现onSingleTapUp方法:
privateclassItemTouchHelperGestureListenerextendsGestureDetector.SimpleOnGestureListener {@OverridepublicbooleanonSingleTapUp(MotionEvent e) {
}
}
到这里,已经获取到了RecyclerView的点击事件和触摸事件数据MotionEvent ,那么我们怎么知道点击的是哪一个item呢?RecyclerView已经为我们提供了这样的方法:findChildViewUnder(),我们可以通过这个方法获得点击的item,同时我们调用RecyclerView的另一个方法getChildViewHolder(),可以获得该item的ViewHolder,最后再回调我们定义的虚方法onItemClick()就ok了,这样我们就可以在外部实现该方法来获得item的点击事件了:
@OverridepublicbooleanonSingleTapUp(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child!=null) {
RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child);
onItemClick(vh);
}
returntrue;
}
觉得有用的话,下面有个顶可以点一下:)
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('
').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介绍了android开发游记:RecyclerView无法添加onItemClickListener最佳的高效解决方案,包括了方面的内容,希望对Android开发有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_1371591_3.html