gpt4 book ai didi

android - 如何在 Android 的 recyclerView 中处理多个布局点击

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:00 26 4
gpt4 key购买 nike

在我们的应用程序中,我们有消息列表。我们正在切换到 RecyclerView。我们的消息可以由文本、图像组成。示例消息可能如下所示。 enter image description here

要处理点击,请使用此类:

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) {
}
}

并且我们在这样的 Activity 中实现这种点击:

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);
}
})
);

消息的点击工作正常,现在我还想处理来自相同 GestureDetectionuserAvatar 点击。是否可以从 GestureDetector 中检测到单击了哪个列表项布局?

换句话说,我可以让GestureDetecter clicked child.在我的例子中,点击设置为整个项目(头像、短信、图像)。我能检测到这个项目中的哪个元素被点击了吗(例如我想捕捉头像点击)。

最佳答案

处理 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) {
}
});


}
}

关于android - 如何在 Android 的 recyclerView 中处理多个布局点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29698436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com