首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StaggeredGridLayout管理器删除项后,项目就会被分散。

StaggeredGridLayout管理器删除项后,项目就会被分散。
EN

Stack Overflow用户
提问于 2017-09-23 06:20:38
回答 1查看 670关注 0票数 2

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

代码语言:javascript
复制
 @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();
}

我在删除项目之前和之后附上了两个屏幕截图。

删除项目后

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-23 07:31:33

可以放入loadDataAll(){

代码语言:javascript
复制
    layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);

/.)沃伊拉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46376702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档