2017-10-12 19 views
-4

notifyDataSetChanged()を使用してrecyclerviewを更新しようとしていますが、動作しません。notifyDataSetChangedを使用してrecyclerviewを最も簡単に更新する方法

RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(ctx, LinearLayoutManager.VERTICAL, false); 
lstSong.setLayoutManager(mLayoutManager); 
lstSong.setItemAnimator(new DefaultItemAnimator()); 
lstSong.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(0), true)); 

arrSong = new ArrayList<Song>(); 
arrSong = kFunc.getAllSong(); 
songAdapter = new SongAdapter(ctx, arrSong); 
lstSong.setAdapter(songAdapter); 

このコードの行は、データが表示されます。私はこのようなrecyclerviewにアダプタを設定しています。しかし、私は新しいデータを追加し、songAdapter.notifyDataSetChanged();とrecyclerviewをリフレッシュすると、データが表示されません。私はsetAdapter()を使ってそれを表示することができますが、私はそれを正しくしたいと思います。

リフレッシュする前にデータを追加します。これはコードです:あなたのクラスに新しい値を得ることがadapdterオブジェクト

lstSong.updateItems(arrSong); 
notifyDataSetChanged(); 
+0

は、あなたがrecyclerviewで新しいアイテムを追加している場所でコードを共有できます –

+0

新しいアイテムを追加する方法を確認するためにSongAdapterのコードを見ることはできますか? – kimkevin

+0

arrSong = kFunc.getAllSong()の代わりに。この使用arrSong.addAll(kFunc.getAllSong()); –

答えて

0

は私にはない

public updateItems(ArrayList<Song> songs){ 
    arrSong=songs; 
} 

のようなアダプタの内部メソッドを作成し、 RecyclerView.Adapterに新しい項目を追加した場所を知っています。これは、アイテムを追加および設定するためのサンプルコードです。詳細Sample RecyclerViewAdapter

+0

私はアダプタのコンストラクタでそれに似た何かをやっています –

+0

はいコンストラクタは初めてです。データが変更されると、メソッドを介して参照を再度更新する必要があります。あなたのadatperとクラスから呼び出す。 – Anonymous

0

を使用してメソッドを呼び出している間

kFunc = new Function(ctx); 
Song song = new Song(); 
song.setTitle(title); 
song.setArtist(artist); 
song.setYear_released(yearReleased); 
song.setAlbum(album); 
song.setGenre(genre); 
song.setDuration(duration); 
song.setCode(code); 
song.setLyrics(lyrics); 

kFunc.addSong(song); 
dialog.dismiss(); 

arrSong = kFunc.getAllSong(); 
songAdapter.notifyDataSetChanged(); 
0

アダプターに通知する前に、曲のリストを更新してください。例

あなたはありませんリストビューにある場合arraySongs = <retrive updated data of the song>; adapter.notifyDataStateChanged()

のためのあなたの情報だけのために 。
adapter.lstSong =<updated songs List>; adapter.notifyDataStteChanged();

これは私のために働いてください。 ハッピーコーディング。 :)

+0

これは私が使っているものです。私の更新を見て –

+0

@RickyManaloあなたは、アダプタの内部にあるリストを更新しようとする必要があります。 –

+0

は、リストを更新するアダプタ内のメソッドを作成するようなものです。アダプタを通知しようとする –

関連する問題