Switch all social list to correctly use loaders.

This commit is contained in:
dosiecki 2014-10-31 05:35:56 -07:00 committed by Samuel Clay
parent 0099bcdf3a
commit 12bee5e504
2 changed files with 19 additions and 23 deletions

View file

@ -1,17 +1,12 @@
package com.newsblur.activity;
import java.util.ArrayList;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuInflater;
import com.newsblur.R;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.database.FeedProvider;
import com.newsblur.fragment.AllSharedStoriesItemListFragment;
import com.newsblur.fragment.FeedItemListFragment;
import com.newsblur.util.DefaultFeedView;

View file

@ -1,8 +1,5 @@
package com.newsblur.fragment;
import android.content.ContentResolver;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
@ -31,33 +28,37 @@ import com.newsblur.view.SocialItemViewBinder;
public class AllSharedStoriesItemListFragment extends ItemListFragment implements OnItemClickListener {
private ContentResolver contentResolver;
ListView itemList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_itemlist, null);
ListView itemList = (ListView) v.findViewById(R.id.itemlistfragment_list);
itemList = (ListView) v.findViewById(R.id.itemlistfragment_list);
setupBezelSwipeDetector(itemList);
itemList.setEmptyView(v.findViewById(R.id.empty_view));
contentResolver = getActivity().getContentResolver();
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_SHORT_CONTENT, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_TIMESTAMP, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS, DatabaseConstants.FEED_TITLE };
int[] groupTo = new int[] { R.id.row_item_title, R.id.row_item_content, R.id.row_item_author, R.id.row_item_date, R.id.row_item_sidebar, R.id.row_item_feedtitle };
// TODO: defer creation of the adapter until the loader's first callback so we don't leak this first ListView cursor
Cursor cursor = dbHelper.getStoriesCursor(getFeedSet(), currentState);
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
itemList.setAdapter(adapter);
itemList.setOnScrollListener(this);
itemList.setOnItemClickListener(this);
if (adapter != null) {
itemList.setAdapter(adapter);
}
getLoaderManager().initLoader(ITEMLIST_LOADER , null, this);
itemList.setOnScrollListener(this);
itemList.setOnItemClickListener(this);
return v;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
if ((adapter == null) && (cursor != null)) {
String[] groupFrom = new String[] { DatabaseConstants.STORY_TITLE, DatabaseConstants.STORY_SHORT_CONTENT, DatabaseConstants.STORY_AUTHORS, DatabaseConstants.STORY_TIMESTAMP, DatabaseConstants.STORY_INTELLIGENCE_AUTHORS, DatabaseConstants.FEED_TITLE };
int[] groupTo = new int[] { R.id.row_item_title, R.id.row_item_content, R.id.row_item_author, R.id.row_item_date, R.id.row_item_sidebar, R.id.row_item_feedtitle };
adapter = new MultipleFeedItemsAdapter(getActivity(), R.layout.row_socialitem, cursor, groupFrom, groupTo, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
adapter.setViewBinder(new SocialItemViewBinder(getActivity()));
itemList.setAdapter(adapter);
}
super.onLoadFinished(loader, cursor);
}
public static ItemListFragment newInstance(StateFilter currentState, DefaultFeedView defaultFeedView) {
ItemListFragment everythingFragment = new AllSharedStoriesItemListFragment();
Bundle arguments = new Bundle();