2017-09-23 7 views
2

私は、データベースからリサイクルビューへのデータを表示するために、互い違いのグリッドレイアウトを使用しています。データベースからアイテムを削除し、アダプタから位置を削除した後、いくつかのアイテムレンダリングの問題。場所のいたるところに散らばっているように。 は、ここで私はアイテムを削除した後にStaggeredGridLayoutマネージャーが散在する

enter image description here

はあなたが指すことができるアイテムを削除した後のアイテム

enter image description here

を削除する前に2つのスクリーンショットの前と 後に付属している

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

私のコードです私に必要なものは何ですか?あなたはloadDataAllの内側に置くことができ

+0

がremove 'notifyDataSetChanged();' ** removeAtから( int position)**メソッド –

+0

@Nilesh、返信ありがとうございます。 – Avinash

+0

@Nilesh、それは動作していません – Avinash

答えて

0

(){

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

// ........ } 出来上がり..

+0

ありがとう、私はinvalidateSpanで試してみましたが、私はリロード後にレイアウトを通知するためにこれを逃した – Avinash

関連する問題