Sharvaniharan has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/394631 )
Change subject: Fix OnThisDayPagesViewHolder crash
......................................................................
Fix OnThisDayPagesViewHolder crash
- App crash on null pages response fixed by adding a null check and removing
any null pages.
Bug: T181668
Change-Id: I1a6061a625e73d485c66332e5558ae25c9ca629e
---
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
4 files changed, 35 insertions(+), 8 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/31/394631/1
diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
index 1c7ea30..d771e95 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
@@ -9,6 +9,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Iterator;
import java.util.List;
public class OnThisDay {
@@ -59,7 +60,14 @@
return year;
}
- @NonNull public List<RbPageSummary> pages() {
+ @Nullable
+ public List<RbPageSummary> pages() {
+ Iterator iterator = pages.iterator();
+ while ((iterator.hasNext())) {
+ if (iterator.next() == null) {
+ iterator.remove();
+ }
+ }
return pages;
}
}
diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
index 363458f..151c644 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
@@ -1,6 +1,7 @@
package org.wikipedia.feed.onthisday;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
@@ -85,7 +86,7 @@
return wiki;
}
- @NonNull public List<RbPageSummary> pages() {
+ @Nullable public List<RbPageSummary> pages() {
return eventShownOnCard.pages();
}
diff --git
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
index 835a65e..43c2285 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
@@ -117,10 +117,18 @@
public void setCard(@NonNull OnThisDayCard card) {
super.setCard(card);
this.age = card.getAge();
- pagesRecycler.setAdapter(new RecyclerAdapter(card.pages(),
card.wiki()));
+ setPagesRecycler(card);
header(card);
}
+ private void setPagesRecycler(OnThisDayCard card) {
+ if (card.pages() != null) {
+ pagesRecycler.setAdapter(new RecyclerAdapter(card.pages(),
card.wiki()));
+ } else {
+ pagesRecycler.setVisibility(GONE);
+ }
+ }
+
@OnClick({R.id.more_events_layout, R.id.view_on_this_day_click_container})
void onMoreClick() {
launchOnThisDayActivity();
}
diff --git
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
index 683e245..c3b76ef 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
@@ -42,6 +42,7 @@
import retrofit2.Callback;
import retrofit2.Response;
+import static android.view.View.GONE;
import static org.wikipedia.feed.onthisday.OnThisDayActivity.AGE;
public class OnThisDayFragment extends Fragment implements
DatePickerFragment.Callback {
@@ -145,7 +146,7 @@
return;
}
onThisDay = response.body();
- progressBar.setVisibility(View.GONE);
+ progressBar.setVisibility(GONE);
eventsRecycler.setVisibility(View.VISIBLE);
updateRecyclerView();
updateTextView();
@@ -171,7 +172,7 @@
dayTextView.setVisibility(View.VISIBLE);
} else if (verticalOffset == 0) {
// Expanded
- dayTextView.setVisibility(View.GONE);
+ dayTextView.setVisibility(GONE);
}
}
});
@@ -224,7 +225,7 @@
@Override
public void onDatePicked(int year, int month, int day) {
- eventsRecycler.setVisibility(View.GONE);
+ eventsRecycler.setVisibility(GONE);
progressBar.setVisibility(View.VISIBLE);
date.set(year, month, day, 0, 0);
requestEvents("" + (month + 1), "" + day);
@@ -287,11 +288,20 @@
}
public void setFields(final OnThisDay.Event event) {
- pagesRecycler.setAdapter(new
OnThisDayCardView.RecyclerAdapter(event.pages(), wiki));
+ setPagesRecycler(event);
descTextView.setText(event.text());
yearTextView.setText(DateUtil.yearToStringWithEra(event.year()));
yearsInfoTextView.setText(DateUtil.getYearDifferenceString(event.year()));
yearsInfoTextView.setBackground(ContextCompat.getDrawable(getContext(),
R.drawable.button_shape_light_gray_corner_rounded));
+ }
+
+
+ private void setPagesRecycler(OnThisDay.Event event) {
+ if (event.pages() != null) {
+ pagesRecycler.setAdapter(new
OnThisDayCardView.RecyclerAdapter(event.pages(), wiki));
+ } else {
+ pagesRecycler.setVisibility(GONE);
+ }
}
void setDarkView() {
@@ -307,7 +317,7 @@
}
void hidePadding() {
- space.setVisibility(View.GONE);
+ space.setVisibility(GONE);
}
}
--
To view, visit https://gerrit.wikimedia.org/r/394631
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1a6061a625e73d485c66332e5558ae25c9ca629e
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Sharvaniharan <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits