android - 删除项目后 StaggeredGridLayout 管理器,项目分散

标签 android staggeredgridlayoutmanager

我正在使用交错网格布局从数据库向回收者 View 显示数据。我遇到了一个问题,在从数据库中删除项目以及从适配器中删除位置后,我遇到了一些项目渲染问题。就像分散的所有在这个地方。 这是我的代码

 @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();
}

附上前后两张截图 在删除项目之前

enter image description here

删除项目后

enter image description here

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

最佳答案

你可以把里面的loadDataAll(){

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

//........ } 瞧……

关于android - 删除项目后 StaggeredGridLayout 管理器,项目分散,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46376702/

相关文章:

android - 如何在后台检测调用并在原生代码和 dart 代码之间架起一座桥梁

android - Eclipse 无法识别我的 Android 平板电脑

java - 如何使用 LayoutInflater 动态添加 editText 和按钮并为它们设置唯一的 id?

Android如何实现基于箭头的布局?

android - 如何使用 StaggeredGridLayoutManager 在 recyclerview 中实现无限滚动(分页)

Android 交错 Grdiv 全屏查看最后一个元素(如果独立)

android - 自定义相机以错误的方向显示预览和缩放图像android

php - Android中JSON无法转换为json对象