如何在Android的RecyclerView中实现左右两侧滑动?

4
我希望能够像下面的图片一样左右两侧滑动RecyclerView: enter image description here 但我无法实现,我找到了很多库,但只有单侧滑动。我想要左右两侧滑动,您能帮我实现吗?
提前感谢!

嘿!如果你已经完成了这个,能否分享一下你的代码? - Shaifali Rajput
我需要在同一行中使用两个滑动手势来实现相同的效果,但我没有找到任何库,你做过这个吗?如果你找到了任何库,能否帮忙一下? - Mitesh Machhoya
@MiteshMachhoya 请查看 https://github.com/HarshEvilGeek/AndroidSwipeLayout - Anand Jain
3个回答

5

我在哪里可以添加双向滑动,我找不到可以添加的地方。 - Anand Jain

0

可能已经晚了,但仍有帮助。

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_childs, container, false);
    recyclerView = v.findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false));
    recyclerView.addItemDecoration(new VerticalItemDecoration());
    recyclerView.setAdapter(new ChildCareAdapter());
    touchHelper.attachToRecyclerView(recyclerView); // Attaching with RecyclerView
    return v;
}

ItemTouchHelper touchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
        return false;
    }

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        if (i == ItemTouchHelper.LEFT) {
            Toast.makeText(getContext(),"Swipe left",Toast.LENGTH_SHORT).show();
        } else if (i == ItemTouchHelper.RIGHT) {
            Toast.makeText(getContext(),"Swipe right",Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
            float alpha = 1 - (Math.abs(dX) / recyclerView.getWidth());
            viewHolder.itemView.setAlpha(alpha);
        }
        super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    }
});

-2
你需要像这样的代码:
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();

if (direction == ItemTouchHelper.LEFT){
  Log.i("ItemSwipe", "LEFT");
} 
else if (direction == ItemTouchHelper.RIGHT){
  Log.i("ItemSwipe", "RIGHT");
 }
}

onSwiped是哪个类的方法? - Anand Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接