Reorganize item fragments lifecycle
This commit is contained in:
parent
e22adbe451
commit
90d5208402
@ -36,6 +36,9 @@ import com.joanzapata.iconify.Iconify;
|
|||||||
import com.joanzapata.iconify.widget.IconButton;
|
import com.joanzapata.iconify.widget.IconButton;
|
||||||
|
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -71,9 +74,6 @@ import io.reactivex.Observable;
|
|||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import org.greenrobot.eventbus.EventBus;
|
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays information about a FeedItem and actions.
|
* Displays information about a FeedItem and actions.
|
||||||
@ -266,7 +266,6 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
|
|||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
load();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -274,6 +273,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
|
|||||||
super.onStart();
|
super.onStart();
|
||||||
EventDistributor.getInstance().register(contentUpdate);
|
EventDistributor.getInstance().register(contentUpdate);
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -306,19 +306,20 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwipeLeftToRight() {
|
public boolean onSwipeLeftToRight() {
|
||||||
Log.d(TAG, "onSwipeLeftToRight()");
|
return swipeFeedItem(-1);
|
||||||
feedItemPos = feedItemPos - 1;
|
|
||||||
if(feedItemPos < 0) {
|
|
||||||
feedItemPos = feedItems.length - 1;
|
|
||||||
}
|
|
||||||
load();
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwipeRightToLeft() {
|
public boolean onSwipeRightToLeft() {
|
||||||
Log.d(TAG, "onSwipeRightToLeft()");
|
return swipeFeedItem(+1);
|
||||||
feedItemPos = (feedItemPos + 1) % feedItems.length;
|
}
|
||||||
|
|
||||||
|
private boolean swipeFeedItem(int position) {
|
||||||
|
Log.d(TAG, String.format("onSwipe() shift: %s", position));
|
||||||
|
feedItemPos = (feedItemPos + position) % feedItems.length;
|
||||||
|
if (feedItemPos < 0) {
|
||||||
|
feedItemPos = feedItems.length - 1;
|
||||||
|
}
|
||||||
load();
|
load();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,9 @@ import com.joanzapata.iconify.Iconify;
|
|||||||
import com.joanzapata.iconify.widget.IconTextView;
|
import com.joanzapata.iconify.widget.IconTextView;
|
||||||
|
|
||||||
import org.apache.commons.lang3.Validate;
|
import org.apache.commons.lang3.Validate;
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -71,9 +74,6 @@ import io.reactivex.Observable;
|
|||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import org.greenrobot.eventbus.EventBus;
|
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays a list of FeedItems.
|
* Displays a list of FeedItems.
|
||||||
@ -96,8 +96,6 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
private long feedID;
|
private long feedID;
|
||||||
private Feed feed;
|
private Feed feed;
|
||||||
|
|
||||||
private boolean itemsLoaded = false;
|
|
||||||
private boolean viewsCreated = false;
|
|
||||||
private boolean headerCreated = false;
|
private boolean headerCreated = false;
|
||||||
|
|
||||||
private List<Downloader> downloaderList;
|
private List<Downloader> downloaderList;
|
||||||
@ -105,7 +103,7 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
private MoreContentListFooterUtil listFooter;
|
private MoreContentListFooterUtil listFooter;
|
||||||
|
|
||||||
private boolean isUpdatingFeed;
|
private boolean isUpdatingFeed;
|
||||||
|
|
||||||
private TextView txtvTitle;
|
private TextView txtvTitle;
|
||||||
private IconTextView txtvFailure;
|
private IconTextView txtvFailure;
|
||||||
private ImageView imgvBackground;
|
private ImageView imgvBackground;
|
||||||
@ -146,9 +144,7 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
super.onStart();
|
super.onStart();
|
||||||
EventDistributor.getInstance().register(contentUpdate);
|
EventDistributor.getInstance().register(contentUpdate);
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
if (viewsCreated && itemsLoaded) {
|
loadItems();
|
||||||
onFragmentLoaded();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -156,7 +152,6 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
((MainActivity)getActivity()).getSupportActionBar().setTitle("");
|
((MainActivity)getActivity()).getSupportActionBar().setTitle("");
|
||||||
updateProgressBarVisibility();
|
updateProgressBarVisibility();
|
||||||
loadItems();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -177,7 +172,6 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
|
|
||||||
private void resetViewState() {
|
private void resetViewState() {
|
||||||
adapter = null;
|
adapter = null;
|
||||||
viewsCreated = false;
|
|
||||||
listFooter = null;
|
listFooter = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,45 +184,43 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
if(!isAdded()) {
|
if (!isAdded()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
|
|
||||||
if (itemsLoaded) {
|
FeedMenuHandler.onCreateOptionsMenu(inflater, menu);
|
||||||
FeedMenuHandler.onCreateOptionsMenu(inflater, menu);
|
|
||||||
|
|
||||||
MenuItem searchItem = menu.findItem(R.id.action_search);
|
MenuItem searchItem = menu.findItem(R.id.action_search);
|
||||||
final SearchView sv = (SearchView) MenuItemCompat.getActionView(searchItem);
|
final SearchView sv = (SearchView) MenuItemCompat.getActionView(searchItem);
|
||||||
MenuItemUtils.adjustTextColor(getActivity(), sv);
|
MenuItemUtils.adjustTextColor(getActivity(), sv);
|
||||||
sv.setQueryHint(getString(R.string.search_hint));
|
sv.setQueryHint(getString(R.string.search_hint));
|
||||||
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onQueryTextSubmit(String s) {
|
public boolean onQueryTextSubmit(String s) {
|
||||||
sv.clearFocus();
|
sv.clearFocus();
|
||||||
if (itemsLoaded) {
|
if (feed != null) {
|
||||||
((MainActivity) getActivity()).loadChildFragment(SearchFragment.newInstance(s, feed.getId()));
|
((MainActivity) getActivity()).loadChildFragment(SearchFragment.newInstance(s, feed.getId()));
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
@Override
|
|
||||||
public boolean onQueryTextChange(String s) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if(feed == null || feed.getLink() == null) {
|
|
||||||
menu.findItem(R.id.share_link_item).setVisible(false);
|
|
||||||
menu.findItem(R.id.visit_website_item).setVisible(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isUpdatingFeed = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker);
|
@Override
|
||||||
|
public boolean onQueryTextChange(String s) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (feed == null || feed.getLink() == null) {
|
||||||
|
menu.findItem(R.id.share_link_item).setVisible(false);
|
||||||
|
menu.findItem(R.id.visit_website_item).setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isUpdatingFeed = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareOptionsMenu(Menu menu) {
|
public void onPrepareOptionsMenu(Menu menu) {
|
||||||
if (itemsLoaded) {
|
if (feed != null) {
|
||||||
FeedMenuHandler.onPrepareOptionsMenu(menu, feed);
|
FeedMenuHandler.onPrepareOptionsMenu(menu, feed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -341,11 +333,6 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
registerForContextMenu(getListView());
|
registerForContextMenu(getListView());
|
||||||
|
|
||||||
viewsCreated = true;
|
|
||||||
if (itemsLoaded) {
|
|
||||||
onFragmentLoaded();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -503,7 +490,7 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
butShowInfo.setOnClickListener(v -> showFeedInfo());
|
butShowInfo.setOnClickListener(v -> showFeedInfo());
|
||||||
imgvCover.setOnClickListener(v -> showFeedInfo());
|
imgvCover.setOnClickListener(v -> showFeedInfo());
|
||||||
butShowSettings.setOnClickListener(v -> {
|
butShowSettings.setOnClickListener(v -> {
|
||||||
if (viewsCreated && itemsLoaded) {
|
if (feed != null) {
|
||||||
Intent startIntent = new Intent(getActivity(), FeedSettingsActivity.class);
|
Intent startIntent = new Intent(getActivity(), FeedSettingsActivity.class);
|
||||||
startIntent.putExtra(FeedSettingsActivity.EXTRA_FEED_ID,
|
startIntent.putExtra(FeedSettingsActivity.EXTRA_FEED_ID,
|
||||||
feed.getId());
|
feed.getId());
|
||||||
@ -514,7 +501,7 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showFeedInfo() {
|
private void showFeedInfo() {
|
||||||
if (viewsCreated && itemsLoaded) {
|
if (feed != null) {
|
||||||
Intent startIntent = new Intent(getActivity(), FeedInfoActivity.class);
|
Intent startIntent = new Intent(getActivity(), FeedInfoActivity.class);
|
||||||
startIntent.putExtra(FeedInfoActivity.EXTRA_FEED_ID,
|
startIntent.putExtra(FeedInfoActivity.EXTRA_FEED_ID,
|
||||||
feed.getId());
|
feed.getId());
|
||||||
@ -624,10 +611,7 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(result -> {
|
.subscribe(result -> {
|
||||||
feed = result.orElse(null);
|
feed = result.orElse(null);
|
||||||
itemsLoaded = true;
|
onFragmentLoaded();
|
||||||
if (viewsCreated) {
|
|
||||||
onFragmentLoaded();
|
|
||||||
}
|
|
||||||
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
|
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user