我想使用notifyDataSetChanged()更新我的recyclerview,但它不起作用。我正在將適配器設置爲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);
這行代碼顯示數據。但是當我添加一個新的數據並刷新songAdapter.notifyDataSetChanged();
的回收站時,數據不會顯示出來。我知道我可以通過使用setAdapter()
來顯示它,但我想正確地做到這一點。
我在刷新之前添加數據。這是代碼:
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();
可以分享您的代碼,您在回收站中添加新物品 –
我可以看到您的SongAdapter代碼檢查如何添加新項目嗎? – kimkevin
而不是arrSong = kFunc.getAllSong();這個使用arrSong.addAll(kFunc.getAllSong()); –