jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/341621 )
Change subject: Populate reading list screen with reading list items. ...................................................................... Populate reading list screen with reading list items. Bug: T156073 Change-Id: Ib3a52cb08067f1b30d24d2add36b3ea37014c93b --- M app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java A app/src/main/res/drawable/ic_offline_pin_black_24dp.xml 2 files changed, 66 insertions(+), 1 deletion(-) Approvals: Niedzielski: Looks good to me, approved jenkins-bot: Verified diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java index 89496d2..d7d4d52 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java @@ -7,6 +7,7 @@ import android.support.design.widget.CollapsingToolbarLayout; import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; @@ -15,7 +16,13 @@ import org.wikipedia.R; import org.wikipedia.concurrency.CallbackTask; +import org.wikipedia.readinglist.page.ReadingListPage; +import org.wikipedia.util.ResourceUtil; +import org.wikipedia.views.DefaultViewHolder; +import org.wikipedia.views.DrawableItemDecoration; +import org.wikipedia.views.PageItemView; +import java.util.Collections; import java.util.List; import butterknife.BindView; @@ -32,6 +39,8 @@ private Unbinder unbinder; @Nullable private ReadingList readingList; + private ReadingListPageItemAdapter adapter = new ReadingListPageItemAdapter(); + @NonNull private ReadingLists readingLists = new ReadingLists(); @NonNull @@ -54,10 +63,18 @@ getAppCompatActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); getAppCompatActivity().getSupportActionBar().setTitle(""); + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + recyclerView.setAdapter(adapter); + recyclerView.addItemDecoration(new DrawableItemDecoration(getContext(), + ResourceUtil.getThemedAttributeId(getContext(), R.attr.list_separator_drawable), true)); + final String readingListTitle = getArguments().getString(EXTRA_READING_LIST_TITLE); ReadingList.DAO.queryMruLists(null, new CallbackTask.Callback<List<ReadingList>>() { @Override public void success(List<ReadingList> lists) { + if (getActivity() == null) { + return; + } readingLists.set(lists); readingList = readingLists.get(readingListTitle); update(); @@ -74,6 +91,9 @@ } @Override public void onDestroyView() { + readingList = null; + readingLists.set(Collections.<ReadingList>emptyList()); + recyclerView.setAdapter(null); unbinder.unbind(); unbinder = null; super.onDestroyView(); @@ -84,6 +104,42 @@ } private void update() { - // TODO: update UI state for the current reading list. + adapter.notifyDataSetChanged(); + } + + private class ReadingListPageItemHolder extends DefaultViewHolder<PageItemView<ReadingListPage>> { + private ReadingListPage page; + + ReadingListPageItemHolder(PageItemView<ReadingListPage> itemView) { + super(itemView); + } + + void bindItem(ReadingListPage page) { + this.page = page; + getView().setItem(page); + getView().setActionIcon(R.drawable.ic_offline_pin_black_24dp); + getView().setTitle(page.title()); + getView().setDescription(page.description()); + getView().setImageUrl(page.thumbnailUrl()); + } + } + + private final class ReadingListPageItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { + @Override + public int getItemCount() { + return readingList == null ? 0 : readingList.getPages().size(); + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type) { + return new ReadingListPageItemHolder(new PageItemView<ReadingListPage>(getContext())); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int pos) { + if (readingList != null && holder instanceof ReadingListPageItemHolder) { + ((ReadingListPageItemHolder) holder).bindItem(readingList.getPages().get(pos)); + } + } } } diff --git a/app/src/main/res/drawable/ic_offline_pin_black_24dp.xml b/app/src/main/res/drawable/ic_offline_pin_black_24dp.xml new file mode 100644 index 0000000..d04f270 --- /dev/null +++ b/app/src/main/res/drawable/ic_offline_pin_black_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M12,2C6.5,2 2,6.5 2,12s4.5,10 10,10 10,-4.5 10,-10S17.5,2 12,2zM17,18L7,18v-2h10v2zM10.3,14L7,10.7l1.4,-1.4 1.9,1.9 5.3,-5.3L17,7.3 10.3,14z"/> +</vector> -- To view, visit https://gerrit.wikimedia.org/r/341621 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib3a52cb08067f1b30d24d2add36b3ea37014c93b Gerrit-PatchSet: 4 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits