fix crash in TimelineFragment

main
Conny Duck 6 years ago
parent e473d914f1
commit 40a62c12f4
  1. 10
      app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java

@ -206,6 +206,9 @@ public class TimelineFragment extends SFragment implements
|| kind == Kind.LIST) { || kind == Kind.LIST) {
hashtagOrId = arguments.getString(HASHTAG_OR_ID_ARG); hashtagOrId = arguments.getString(HASHTAG_OR_ID_ARG);
} }
adapter = new TimelineAdapter(dataSource, this);
} }
@Override @Override
@ -218,9 +221,6 @@ public class TimelineFragment extends SFragment implements
progressBar = rootView.findViewById(R.id.progress_bar); progressBar = rootView.findViewById(R.id.progress_bar);
nothingMessageView = rootView.findViewById(R.id.nothing_message); nothingMessageView = rootView.findViewById(R.id.nothing_message);
adapter = new TimelineAdapter(dataSource, this);
setupSwipeRefreshLayout(); setupSwipeRefreshLayout();
setupRecyclerView(); setupRecyclerView();
updateAdapter(); updateAdapter();
@ -835,6 +835,7 @@ public class TimelineFragment extends SFragment implements
} }
private void onFetchTimelineFailure(Exception exception, FetchEnd fetchEnd, int position) { private void onFetchTimelineFailure(Exception exception, FetchEnd fetchEnd, int position) {
if(isAdded()) {
swipeRefreshLayout.setRefreshing(false); swipeRefreshLayout.setRefreshing(false);
if (fetchEnd == FetchEnd.MIDDLE && !statuses.get(position).isRight()) { if (fetchEnd == FetchEnd.MIDDLE && !statuses.get(position).isRight()) {
@ -852,6 +853,7 @@ public class TimelineFragment extends SFragment implements
fulfillAnyQueuedFetches(fetchEnd); fulfillAnyQueuedFetches(fetchEnd);
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
} }
}
private void fulfillAnyQueuedFetches(FetchEnd fetchEnd) { private void fulfillAnyQueuedFetches(FetchEnd fetchEnd) {
switch (fetchEnd) { switch (fetchEnd) {
@ -1055,12 +1057,14 @@ public class TimelineFragment extends SFragment implements
private final ListUpdateCallback listUpdateCallback = new ListUpdateCallback() { private final ListUpdateCallback listUpdateCallback = new ListUpdateCallback() {
@Override @Override
public void onInserted(int position, int count) { public void onInserted(int position, int count) {
if(isAdded()) {
adapter.notifyItemRangeInserted(position, count); adapter.notifyItemRangeInserted(position, count);
Context context = getContext(); Context context = getContext();
if (position == 0 && context != null) { if (position == 0 && context != null) {
recyclerView.scrollBy(0, Utils.dpToPx(context, -30)); recyclerView.scrollBy(0, Utils.dpToPx(context, -30));
} }
} }
}
@Override @Override
public void onRemoved(int position, int count) { public void onRemoved(int position, int count) {

Loading…
Cancel
Save