我正在开发一个用于播放音频文件的应用程序。创建了包含 2 个选项卡的选项卡布局。两者中都使用了片段RecyclerView
两者都被使用。该片段名为LibraryFragment
有这个RecycleView
其物品在刷卡时必须传递给HomeFragment
,这就是我想做的。但即使滑动动画正在发生,OnSwipe
方法根本不起作用。
这是我用来为我的 recyclerview 的项目提供刷卡功能的方法LibraryFragment
. Under OnCreateView
我称之为方法initSwipe()
method.
private void initSwipe(){
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT ) {
private boolean swipeBack = false;
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
if (direction == ItemTouchHelper.LEFT){
HomeFragment.audioList.clear();
HomeFragment.audioList.add(audioList.get(position));
HomeFragment.libraryAdapter.notifyDataSetChanged();
Log.e(TAG, "onSwiped: " );
}
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder, float dX, float dY,
int actionState, boolean isCurrentlyActive) {
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL)
{
swipeBack = true;
}
else
{
swipeBack = false;
}
return false;
}
});
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
@Override
public int convertToAbsoluteDirection(int flags, int layoutDirection) {
int value = swipeBack ? 0 : super.convertToAbsoluteDirection(flags, layoutDirection);
swipeBack = false;
return value;
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(libraryRecyclerView);
}
请帮忙。