J'ai un RecyclerView
qui a une grille d'articles. En cliquant sur un élément, il met en évidence.
Je veux aussi que lorsque l'utilisateur balaie vers la droite, une méthode 'next' soit appelée, et quand l'utilisateur balaie vers la gauche, une méthode 'précédente' est appelée.
Cependant, les deux ne fonctionnent pas les uns avec les autres, car chacun intercepte les événements de l'autre.
Comment les amener à travailler ensemble?RecyclerView lancer et l'article cliquez sur
Ceci est mon code:
RecyclerView Adaptateur
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);
}
Fragment qui contient le 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;
}
Parce que je mets return false
en cas OnTouch, cliquez sur de l'article l'événement est déclenché. Toutefois, l'événement MouseDown ne se déclenche pas dans OnTouch, ce qui empêche la détection de retour de balayage (beacuse x1 est toujours 0).
Cependant, les deux ne fonctionnent pas avec l'autre, comme chaque INTERCEPTIONS l'autre des événements, Pouvez-vous expliquer plus cette ligne –
@OmarHossamEldin Je voulais dire que tous les événements ne sont pas complètement appelés, puisqu'ils se «bloquent» les uns les autres. Ajout d'une explication au bas de la question. Si ce n'est toujours pas clair, dites-moi. – amitairos
Vous pouvez utiliser RecyclerView dans ViewPager –