Raf*_*ael 9 android onclicklistener android-recyclerview
在我们的应用程序中,我们有消息列表.我们正在转向RecyclerView
.我们的消息可以包括文本,图像.示例消息可能如下所示.
要处理点击,请使用此类:
public class RecyclerViewItemClickListener implement RecyclerView.OnItemTouchListener {
public static interface OnItemClickListener {
public void onItemClick(View view, int position);
public void onItemLongClick(View view, int position);
}
private OnItemClickListener mListener;
private GestureDetector mGestureDetector;
public RecyclerViewItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e)
{
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
if(childView != null && mListener != null)
{
mListener.onItemLongClick(childView, recyclerView.getChildAdapterPosition(childView));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
}
Run Code Online (Sandbox Code Playgroud)
我们在这样的活动中实施此点击:
chatView.setLongClickable(true);
chatView.addOnItemTouchListener(
new RecyclerViewItemClickListener(this, chatView, new RecyclerViewItemClickListener.OnItemClickListener() {
@Override public void onItemClick(View view, int position) {
//handleSingleClick(view, position);
}
@Override
public void onItemLongClick(View view, int position)
{
handleLongPress(position);
}
})
);
Run Code Online (Sandbox Code Playgroud)
消息的点击工作正在运行,现在我也希望处理userAvatar
同样的点击GestureDetection
.是否可以检测单击哪个列表项布局GestureDetector
?
换句话说,我可以GestureDetecter
点击儿童.在我的情况下,点击设置为整个项目(头像,短信,图像).我可以检测此项目中的哪个元素被点击(例如我想要捕捉头像点击).
小智 5
处理 RecyclerView 适配器中的点击,如下例所示:
private class BookmarkViewHolder extends RecyclerView.ViewHolder {
protected ImageView thumbnailIcon;
protected TextView postTitle;
protected TextView postViewCount;
public BookmarkViewHolder(View v) {
super(v);
thumbnailIcon = (ImageView) v.findViewById(R.id.thumbnailIcon);
postTitle = (TextView) v.findViewById(R.id.postTitleTV);
postViewCount = (TextView) v.findViewById(R.id.viewCountTV);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
thumbnailIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
postTitle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下代码:
GestureDetector detector;
Run Code Online (Sandbox Code Playgroud)
然后:
detector = new GestureDetector(MainActivity.this, MainActivity.this);
avatar.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View view, MotionEvent e) {
detector.onTouchEvent(e);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7851 次 |
最近记录: |