当前位置: 首页 > 知识库问答 >
问题:

StaggeredGridLayout管理器删除项目后,项目变得分散

岳炎彬
2023-03-14

我正在使用交错网格布局来显示数据以从数据库中回收视图。我遇到了一个问题,在从数据库中删除项目并从适配器中删除位置后,我得到了一些项目渲染issues.Like分散在各处。这是我的代码

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_note_favorite);
    ButterKnife.bind(this);
    toolbar = (Toolbar) findViewById(R.id.fav_note_toolbar);
    setSupportActionBar(toolbar);

    noteAdapter = new NoteAdapter(noteModelList, NoteFavoriteActivity.this);
    layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(noteAdapter);
    touchListenerRecycler();
    loadDataAll();


}
private void loadAll() {
    noteModelList.clear();

    DBManagerFav dbManagerFav = DBManagerFav.getInstance(NoteFavoriteActivity.this);
    dbManagerFav.openDataBase();
    noteModelList = dbManagerFav.getAllNoteList();
    Log.i(TAG, " size : " + noteModelList.size());
    noteAdapter = new NoteAdapter(noteModelList, NoteFavoriteActivity.this);
    recyclerView.setAdapter(noteAdapter);
    noteAdapter.notifyDataSetChanged();

    dbManagerFav.closeDataBase();

}


 private void deleteOperation() {

    DBManagerFav dbManagerFav = DBManagerFav.getInstance(NoteFavoriteActivity.this);
    dbManagerFav.openDataBase();

    NoteModel noteModel = new NoteModel();
    noteModel.setId(noteModelList.get(adapterClickedPosition).getId());

    int status = dbManagerFav.deleteNote(noteModelList.get(adapterClickedPosition).getId());
    if (status > 0) {

        noteAdapter.removeAt(adapterClickedPosition);

    }
    dbManagerFav.closeDataBase();
    loadDataAll();
}
//this belongs to adapter
public void removeAt(int position) {
    Log.d(TAG, " removing at position : " + position);
    noteModelList.remove(position);
    notifyItemRemoved(position);
    notifyItemRangeChanged(position, noteModelList.size());
    notifyDataSetChanged();
}

在删除一个项目之前,我已经附上了前后两张截图

删除项目后

你能指出我还需要什么吗?

共有1个答案

慕容玉堂
2023-03-14

您可以将其放入loadDataAll()中{

    layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);

}瞧...

 类似资料:
  • 曾几何时,对于使用惯了C/C++语言的猿们来说,项目代码的组织与管理绝对是一场噩梦。为了解决C/C++项目的管理问题,猿神们想尽了各种办法,开发出了各种五花八门的项目管理工具,从一开始的automake到后来的cmake、qmake等等,但结果并不如人意,往往是解决了一些问题,却引入了更多的问题,C/C++猿们经常会陷入在掌握语言本身的同时,还要掌握复杂的构建工具语法的窘境。无独有偶,java的项

  • 创建项目 点击选择【在线AssetBundle检测】产品,您将进入到该产品的项目管理界面,如下图所示。 点击“+”号,即会出现如下项目创建界面。 填写项目信息,包括 项目名称、项目引擎、具体版本号 和 资源类型 后,点击 “下一步” 后完成项目创建,项目界面中将根据项目信息生成一个新的项目。 注意:在当前的UWA资源检测版本中,我们仅对Unity引擎的AssetBundle文件进行检测和分析。 上

  • 创建项目 点击选择【游戏/VR应用性能诊断与优化】产品,您将进入到该产品的项目管理界面,如下图所示。 通过简单三个步骤,即可创建评测项目。 点击 “+” 号,打开创建项目界面。 在界面中填写详细的项目信息,包括项目名称、发布平台、项目引擎和项目类型后,点击 “下载SDK” ,系统将根据您所选择的项目平台来下载对应的 UWA SDK,将在后续的SDK集成时使用。 点击 “下一步” 完成项目创建,项目

  • 进入San CLI UI的主页即为项目管理界面,可对显示的本地列表项目进行搜索、收藏、在编辑器打开、重命名、从San CLI UI删除(不会删除本地文件),删除后可通过导入项目重新显示在项目列表中,

  • 为了养成良好的习惯,我们把 ConTeXt 文档拆分到几个单独的.tex 文件中,这样维护起来比较方便。 首先是主文档 product.tex[73],生成 PDF 只要编译此文件即可 %%%%%此文件使用 product 环境,起始声明 \startproduct{} %%%导言区使用 \environment 载入文件 %载入样式文件 style.tex \environment style

  • 删除项目后,“我的回收器”视图未更新。此recyclerView位于片段内部。我试过各种方法,但都不管用。 片段类中的适配器声明 回收服务适配器: } 调试项目时,我可以看到该项实际上正在从ArrayList中删除。但不在循环视图中更新。 删除后,如果滚动回收站视图,则从回收站视图中删除已删除的项。但不是没有滚动。