【发布时间】:2017-10-12 08:43:51
【问题描述】:
我正在尝试使用 notifyDataSetChanged() 更新我的 recyclerview,但它不起作用。我将适配器设置为 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(); 刷新recyclerview 时,数据不会显示。我知道我可以使用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();
【问题讨论】:
-
可以分享你在recyclerview中添加新项目的代码
-
我可以看看你的 SongAdapter 代码来检查如何添加新项目吗?
-
而不是 arrSong = kFunc.getAllSong();这个使用 arrSong.addAll(kFunc.getAllSong());
-
哇,@JRamesh 成功了。这是我第一次使用该代码。在我记得我刚刚使用 notifyDataSetChanged() 之前
标签: android android-recyclerview