我在网格设置中有一个Reyclerview。
它的外观如何
我的问题是 我已经在我的recyclerview子卡中实现了红色按钮的onTouchListeners,以及Touch上的整个卡片。
[听我的适配器中红色按钮的onTouch事件 和片段中的recyclerview整个孩子的OnItemTouchListener]
现在,当我点击红色按钮时 点击监听器都会触发
我如何确保当我点击红色按钮时只触发了onTouchListener,而不是整个卡onItemTouch监听器?
在正常的gridview中 onclick听众没有重叠,当我点击红色的只有onclick2被解雇时,当我点击整张卡onclick1解雇时
感谢您提供有关这方面的任何指示或帮助
代码段:
mRecyclerApps.addOnItemTouchListener(
new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
@Override public void onItemClick(View view, int position) {
startActivity(context.getPackageManager().getLaunchIntentForPackage(installedApps.get(position).getPackageName() ));
}
})
);
适配器中的红色区域onTouchListener
holder._appInfo.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Toast.makeText(_ctx, "info button Clicked for " + position, Toast.LENGTH_LONG).show();
return false;
}
});
使用onClickListener也没有帮助,提供相同的输出
holder._appInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(_ctx, "info button Clicked for " + position, Toast.LENGTH_LONG).show();
}
});
答案 0 :(得分:1)
你做错了, 您无法在儿童触摸内添加 itemtouchlistener , 您需要做的就是让视图触摸,并触摸孩子
//parent touch event
holder.main_view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// parent touch login
return false;
}
});
//child touch event
holder._appInfo.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Toast.makeText(_ctx, "info button Clicked for " + position, Toast.LENGTH_LONG).show();
return false;
}
});