diff options
Diffstat (limited to 'app/src/main/java/mygram/droid/HomeRows.java')
| -rw-r--r-- | app/src/main/java/mygram/droid/HomeRows.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/app/src/main/java/mygram/droid/HomeRows.java b/app/src/main/java/mygram/droid/HomeRows.java index ed638b6..e4abeb5 100644 --- a/app/src/main/java/mygram/droid/HomeRows.java +++ b/app/src/main/java/mygram/droid/HomeRows.java @@ -37,11 +37,14 @@ final class HomeRows extends RecyclerView.Adapter<HomeRows.Row> { static final class Row extends RecyclerView.ViewHolder { final TextView title; final RecyclerView tiles; + /** Backing list of the row's one adapter: rebinds refill it instead of replacing the adapter. */ + final List<TileAdapter.Tile> list = new ArrayList<>(); Row(LinearLayout v, TextView title, RecyclerView tiles) { super(v); this.title = title; this.tiles = tiles; + tiles.setAdapter(new TileAdapter(list, Ui.POST_W, Ui.POST_H)); } } @@ -80,17 +83,18 @@ final class HomeRows extends RecyclerView.Adapter<HomeRows.Row> { samples.put(f.slug, posts); // marks it loading, so it is fetched once Api.async(() -> Api.folderSample(f, SAMPLE), p -> { samples.put(f.slug, p); - notifyItemChanged(folders.indexOf(f)); + notifyItemChanged(folders.indexOf(f), Boolean.TRUE); // payload: keep the holder, so focus stays }, e -> { // the row keeps only its Continue tile }); } - List<TileAdapter.Tile> tiles = new ArrayList<>(); + List<TileAdapter.Tile> tiles = row.list; + tiles.clear(); for (Post p : posts) tiles.add(TileAdapter.post(p, () -> open(f, p))); tiles.add(new TileAdapter.Tile(null, "Continue", R.drawable.ic_arrow_forward, -1, () -> FolderActivity.open(activity, f))); - row.tiles.setAdapter(new TileAdapter(tiles, Ui.POST_W, Ui.POST_H)); + row.tiles.getAdapter().notifyDataSetChanged(); } @Override |
