在EdgridLayoutManager中平滑滚动

l0oc07j2  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(221)

我找到了如何在stackoverflow上的recycler视图中平滑滚动的答案,其中最常见的答案是 setNestedScrollingEnabled(false) . 但我用的是 StaggeredGridLayoutManager 我面临着同样的问题,即滚动不顺畅,它冻结在一个位置。在我的情况下,将嵌套滚动设置为false没有帮助。我已经看完了这个答案,但与我的问题不符。
在mainactivity的onCreate方法中

  1. StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
  2. layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);
  3. recyclerView.setLayoutManager(layoutManager);
  4. noteAdapter = new NoteAdapter(myList,this);
  5. recyclerView.setAdapter(noteAdapter);

我的noteadapter类

  1. public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.myAdapter> {
  2. private List<Note> list;
  3. private final NotesListeners notesListeners;
  4. public NoteAdapter(List<Note> liste, NotesListeners notesListeners) {
  5. this.list = liste;
  6. this.notesListeners = notesListeners;
  7. }
  8. @NonNull
  9. @Override
  10. public NoteAdapter.myAdapter onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  11. View view = LayoutInflater.from(parent.getContext())
  12. .inflate(R.layout.item_container_note,parent,
  13. false);
  14. return new myAdapter(view);
  15. }
  16. @Override
  17. public void onBindViewHolder(@NonNull NoteAdapter.myAdapter holder, int position) {
  18. holder.bind(list.get(position));
  19. holder.layoutContainer.setOnClickListener(view -> notesListeners.onNoteClicked(list.get(position),position));
  20. }
  21. @Override
  22. public int getItemCount() {
  23. return list.size();
  24. }
  25. @Override
  26. public int getItemViewType(int position) {
  27. return position;
  28. }
  29. public static class myAdapter extends RecyclerView.ViewHolder {
  30. TextView textTitle, textSubtitle, textDate;
  31. LinearLayout layoutContainer;
  32. RoundedImageView noteImage;
  33. public myAdapter(@NonNull View itemView) {
  34. super(itemView);
  35. //find View By ids here
  36. }
  37. public void bind(Note note)
  38. {
  39. //Binding few objects
  40. }

看看这个:
https://i.stack.imgur.com/x3zjc.gif

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题