gpt4 book ai didi

android - 如何使用 onInterceptTouchEvent 从 RecyclerView 中点击特定 View ?

转载 作者:行者123 更新时间:2023-11-30 01:46:04 68 4
gpt4 key购买 nike

我一直在寻找,但我仍然没有找到任何东西。我试过了

View child = mirecycler.findChildViewUnder(e.getX(), and.getY());  

在我的例子中,它只用于获取父级 CardView 容器“行”,我需要获取特定的 TextViewImageView

我想将onClick设置为ImageView而不影响CardViewonClick

public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && mGestureDetector.onTouchEvent(e)) {
Toast.makeText(MainActivity.this, "tocaste " + child, Toast.LENGTH_SHORT).show();
return true;
}
return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}

最佳答案

如果您必须使用 onInterceptTouchEvent,我不确定我能帮到您。我只在不需要管理特定点击时才使用它,但也许我的解决方案可以与它一起工作(虽然我没有尝试过)

我将提供一个解决方案,让您使用客户适配器检测点击点:

public class SomeRecyclerAdapter extends RecyclerView.Adapter<SomeRecyclerAdapter.SomeListViewHolder> {

....

@Override
public void onBindViewHolder(final SomeViewHolder holder, final int position) {
SomeItem item = someList.get(position);

holder.itemView.setTag(item);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SomeListItem item = (SomeListItem) holder.itemView.getTag();
Toast.makeText(context, "Recycle Click " + item.getName(), Toast.LENGTH_SHORT).show();
}
});

holder.vImage.setTag(item);
holder.vImage
.setOnClickListener(new CompoundButton.OnClickListener(){

@Override
public void onClick(View v) {
SomeListItem item = (SomeItem) holder.vImage.getTag();
Toast.makeText(context, item.getName() + " Image Clicked", Toast.LENGTH_SHORT).show();
}
});
....

public static class SomeListViewHolder extends RecyclerView.ViewHolder{
protected ImageView vImage;

public SomeListViewHolder(View itemView) {
super(itemView);
vImage = (ImageView) itemView.findViewById(R.id.tem_some_list);
}

}

}

我的示例是如何处理 Recycler Item Image 中的点击。我已经尝试过这个解决方案并且它有效,这意味着如果你点击项目(图像除外)它将打印“回收点击......”,如果你点击图像它将打印“......单击图像”。

也许(未测试,但您可以这样做并告诉我们)您可以对 CardView 使用 onInterceptTouchEvent,对图像使用 onClickListener。

我希望这就是您要找的,如果您找到更好的解决方案请告诉我。

关于android - 如何使用 onInterceptTouchEvent 从 RecyclerView 中点击特定 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703294/

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