我有一个RecyclerView
有一个物品的网格。点击某个项目后,它会突出显示。
我也希望当用户向右滑动时会调用'next'方法,并且当用户向左滑动时,会调用'previous'方法。
但是,这两者并不能相互解决,因为每个人都会拦截对方的事件。
我如何让他们一起工作?RecyclerView一扔和物品点击
这是我的代码:
RecyclerView适配器
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
myHolder = holder as MyView;
myHolder.mMainView.SetOnClickListener(this);
if (selected_position == position)
{
holder.ItemView.SetBackgroundColor(Color.LightGray);
}
else
{
holder.ItemView.SetBackgroundColor(Color.Transparent);
}
}
public void OnClick(View v)
{
int position = mRecyclerView.GetChildLayoutPosition((View)sender);
// Updating old as well as new positions
NotifyItemChanged(selected_position);
selected_position = position;
NotifyItemChanged(selected_position);
}
片段包含RecyclerView
calendarRecyclerView.SetOnTouchListener(this);
public bool OnTouch(View v, MotionEvent e)
{
switch (e.Action)
{
case MotionEventActions.Down:
x1 = e.GetX();
break;
case MotionEventActions.Up:
x2 = e.GetX();
float deltaX = x2 - x1;
if (Math.Abs(deltaX) > MIN_DISTANCE)
{
// Left to Right swipe action
if (x2 > x1)
{
NextMonth();
}
// Right to left swipe action
else
{
PreviousMonth();
}
}
break;
}
return false;
}
因为我在OnTouch事件把return false
,该项目的点击事件被解雇。但是,MouseDown事件不会在OnTouch中触发,从而阻止刷回检测(因为x1始终为0)。
然而,这两个不互相奏效,因为每个拦截对方的事件,你能解释更多的这条线 –
@OmarHossamEldin我的意思是,并不是所有的事件都被完全调用,因为它们会阻塞对方。问题底部添加了解释。如果还不清楚,告诉我。 – amitairos
您可以在ViewPager中使用RecyclerView –