Java 在StaggedGridLayoutManager中平滑滚动
我找到了如何在stackoverflow上的Recycler视图中进行平滑滚动的答案,其中最常见的答案是Java 在StaggedGridLayoutManager中平滑滚动,java,android,android-recyclerview,Java,Android,Android Recyclerview,我找到了如何在stackoverflow上的Recycler视图中进行平滑滚动的答案,其中最常见的答案是setNestedScrollingEnabled(false)。但我使用的是StaggedGridLayoutManager,我面临着同样的问题,即滚动不平稳,它冻结在某个位置。在我的情况下,将嵌套滚动设置为false没有帮助。我已经看完了答案,但和我的问题不符 在我的主要活动的onCreate方法中 StaggeredGridLayoutManager layoutMana
setNestedScrollingEnabled(false)
。但我使用的是StaggedGridLayoutManager,我面临着同样的问题,即滚动不平稳,它冻结在某个位置。在我的情况下,将嵌套滚动设置为false没有帮助。我已经看完了答案,但和我的问题不符
在我的主要活动的onCreate方法中
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);
recyclerView.setLayoutManager(layoutManager);
noteAdapter = new NoteAdapter(myList,this);
recyclerView.setAdapter(noteAdapter);
我的NoteAdapter类
public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.myAdapter> {
private List<Note> list;
private final NotesListeners notesListeners;
public NoteAdapter(List<Note> liste, NotesListeners notesListeners) {
this.list = liste;
this.notesListeners = notesListeners;
}
@NonNull
@Override
public NoteAdapter.myAdapter onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_container_note,parent,
false);
return new myAdapter(view);
}
@Override
public void onBindViewHolder(@NonNull NoteAdapter.myAdapter holder, int position) {
holder.bind(list.get(position));
holder.layoutContainer.setOnClickListener(view -> notesListeners.onNoteClicked(list.get(position),position));
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
public static class myAdapter extends RecyclerView.ViewHolder {
TextView textTitle, textSubtitle, textDate;
LinearLayout layoutContainer;
RoundedImageView noteImage;
public myAdapter(@NonNull View itemView) {
super(itemView);
//find View By ids here
}
public void bind(Note note)
{
//Binding few objects
}
公共类NoteAdapter扩展了RecyclerView.Adapter{
私人名单;
私人最终票据保管人票据保管人;
公共记事本适配器(列表列表、记事本、记事本){
this.list=liste;
this.notesListeners=notesListeners;
}
@非空
@凌驾
public NoteAdapter.myAdapter onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
View=LayoutInflater.from(parent.getContext())
.充气(右布局、物品、容器、注意事项、上级、,
假);
返回新的myAdapter(视图);
}
@凌驾
public void onBindViewHolder(@NonNull NoteAdapter.myAdapter holder,int位置){
持有者绑定(列表获取(位置));
holder.layoutContainer.setOnClickListener(视图->notesListeners.onNoteClicked(list.get(position),position));
}
@凌驾
public int getItemCount(){
返回list.size();
}
@凌驾
public int getItemViewType(int位置){
返回位置;
}
公共静态类myAdapter扩展了RecyclerView.ViewHolder{
TextView textTitle、textSubtitle、textDate;
线性布局布局容器;
RoundedImageView注释图像;
公共myAdapter(@NonNull View itemView){
超级(项目视图);
//在此处按ID查找视图
}
公共无效绑定(注)
{
//绑定少数对象
}
看看这个:
你能添加一个视频吗?这样我们才能更好地理解。@ahmadbajwa你现在可以看一看。我已经添加了GIF我知道你的问题,但是你上面的代码很好。添加你的带有适配器的主类。这样我们就可以看到你问题的细节。@ahmadbajwa我已经再次更新了它,请看一看我不知道是什么迫使应用程序这样做的,因为我们上面的代码很好用。可能是你的xml导致了这个延迟。你能添加一个视频吗?这样我们才能更好地理解。@ahmadbajwa你现在可以看一看。我已经添加了GIF我知道你的问题,但是你上面的代码很好。添加你的带有适配器的主类。这样我们就可以看到你问题的细节。@ahmadbajwa我已经更新了再说一遍,请看一看,我不知道是什么迫使应用程序这么做的,因为你上面的代码很好用。可能是你的xml导致了这种延迟。