Android: есть ли способ присоединить объект ItemTouchHelper.SimpleCallback к одному CardView? - PullRequest
0 голосов
/ 22 сентября 2018

Я вижу, что установка для объекта ItemTouchHelper.SimpleCallback заключается в том, чтобы прикрепить объект к RecyclerView.Есть ли способ прикрепить объект к одному CardView?Я хотел бы показать один CardView пользователю с его собственной деятельностью.Я пытаюсь показать отставание, когда пользователь проводит по одному CardView.Ниже приведен класс ItemTouchHelper, который я использую для считывания с CardView в полном списке RecyclerView с несколькими CardViews (RecyclerView Activity).

public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback {
private RecyclerItemTouchHelperListener listener;

RecyclerItemTouchHelper(int dragDirs, int swipeDirs, RecyclerItemTouchHelperListener listener) {
    super(dragDirs, swipeDirs);
    this.listener = listener;
}

@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
    return true;
}

@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
    if (viewHolder != null) {
        final View foregroundView = ((MyRecylerAdapter.ItemHolder) viewHolder).viewForeground;getDefaultUIUtil().onSelected(foregroundView);
    }
} 

 @Override
public void onChildDrawOver(Canvas c, RecyclerView recyclerView,
    RecyclerView.ViewHolder viewHolder, float dX, float dY,
    int actionState, boolean isCurrentlyActive) {

    final View foregroundView = ((MyRecylerAdapter.ItemHolder) viewHolder).viewForeground;        
    getDefaultUIUtil().onDrawOver(c, recyclerView, foregroundView, dX, dY,
        actionState, isCurrentlyActive);
}

@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {

    final View foregroundView = ((MyRecylerAdapter.ItemHolder) viewHolder).viewForeground;
    getDefaultUIUtil().clearView(foregroundView);
}

@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView,
    RecyclerView.ViewHolder viewHolder, float dX, float dY,
    int actionState, boolean isCurrentlyActive) {

    final View foregroundView = ((MyRecylerAdapter.ItemHolder) viewHolder).viewForeground;        
    getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY,
        actionState, isCurrentlyActive);
} 

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {        
    listener.onSwiped(viewHolder, direction, viewHolder.getAdapterPosition());
}

@Override
public int convertToAbsoluteDirection(int flags, int layoutDirection) {
    return super.convertToAbsoluteDirection(flags, layoutDirection);
}

public interface RecyclerItemTouchHelperListener {        
    void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position);
}
}

// onSwiped() in the RecyclerView Activity 
// removes the CardView from the database 
// and then updates the RecyclerView's 
// adapter so the View is updated.
...