use of android.support.v4.content.Loader in project enroscar by stanfy.
the class LoaderSetTest method shouldWaitFor3Requests.
@Ignore
@Test
public void shouldWaitFor3Requests() throws Throwable {
// enqueue
getWebServer().enqueue(new MockResponse().setBody("R1"));
getWebServer().enqueue(new MockResponse().setBody("R2"));
getWebServer().enqueue(new MockResponse().setBody("R3"));
final URL url = getWebServer().getUrl("/");
final Fragment fragment = createFragment();
final LoaderManager loaderManager = fragment.getLoaderManager();
assertThat(loaderManager).isNotNull();
final CountDownLatch waiter = new CountDownLatch(1);
// describe loader
final LoaderSet set = LoaderSet.build(getApplication()).withManager(loaderManager).withCallbacks(new LoaderSet.SetCallbacksAdapter<ResponseData<String>>() {
@Override
public Loader<ResponseData<String>> onCreateLoader(final int id, final Bundle args) {
return new MyRequestBuilder<String>(getApplication()) {
}.setUrl(url.toString()).setFormat("string").getLoader();
}
}, 1).withCallbacks(new LoaderSet.SetCallbacksAdapter<ResponseData<String>>() {
@Override
public Loader<ResponseData<String>> onCreateLoader(final int id, final Bundle args) {
return new MyRequestBuilder<String>(getApplication()) {
}.setUrl(url.toString()).setFormat("string").getLoader();
}
}, 2, 3).create();
final LoaderSet.LoaderSetCallback callbacks = new LoaderSet.LoaderSetCallback() {
@Override
public void onLoadFinished(final Object[] data) {
Log.i("ChainTest", Arrays.toString(data));
waiter.countDown();
}
};
set.init(null, callbacks);
// TODO finish it
waitAndAssert(new Waiter<Object[]>() {
@Override
public Object[] waitForData() {
try {
waiter.await(2, TimeUnit.SECONDS);
return LoaderSetAccess.getResults(set);
} catch (final InterruptedException e) {
return null;
}
}
}, new Asserter<Object[]>() {
@SuppressWarnings("unchecked")
@Override
public void makeAssertions(final Object[] data) throws Exception {
assertThat(data.length).isEqualTo(3);
assertThat(((ResponseData<String>) data[0]).getModel()).isEqualTo("R1");
assertThat(((ResponseData<String>) data[1]).getModel()).isEqualTo("R2");
assertThat(((ResponseData<String>) data[2]).getModel()).isEqualTo("R3");
}
});
}
use of android.support.v4.content.Loader in project platform_frameworks_base by android.
the class DirectoryFragment method onActivityCreated.
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final Context context = getActivity();
final State state = getDisplayState();
// Read arguments when object created for the first time.
// Restore state if fragment recreated.
Bundle args = savedInstanceState == null ? getArguments() : savedInstanceState;
mRoot = args.getParcelable(Shared.EXTRA_ROOT);
mDocument = args.getParcelable(Shared.EXTRA_DOC);
mStateKey = buildStateKey(mRoot, mDocument);
mQuery = args.getString(Shared.EXTRA_QUERY);
mType = args.getInt(Shared.EXTRA_TYPE);
final Selection selection = args.getParcelable(Shared.EXTRA_SELECTION);
mSelection = selection != null ? selection : new Selection();
mSearchMode = args.getBoolean(Shared.EXTRA_SEARCH_MODE);
mIconHelper = new IconHelper(context, MODE_GRID);
mAdapter = new SectionBreakDocumentsAdapterWrapper(this, new ModelBackedDocumentsAdapter(this, mIconHelper));
mRecView.setAdapter(mAdapter);
// Switch Access Accessibility API needs an {@link AccessibilityDelegate} to know the proper
// route when user selects an UI element. It usually guesses this if the element has an
// {@link OnClickListener}, but since we do not have one for itemView, we will need to
// manually route it to the right behavior. RecyclerView has its own AccessibilityDelegate,
// and routes it to its LayoutManager; so we must override the LayoutManager's accessibility
// methods to route clicks correctly.
mLayout = new GridLayoutManager(getContext(), mColumnCount) {
@Override
public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler, RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfoForItem(recycler, state, host, info);
info.addAction(AccessibilityActionCompat.ACTION_CLICK);
}
@Override
public boolean performAccessibilityActionForItem(RecyclerView.Recycler recycler, RecyclerView.State state, View view, int action, Bundle args) {
// We are only handling click events; route all other to default implementation
if (action == AccessibilityNodeInfoCompat.ACTION_CLICK) {
RecyclerView.ViewHolder vh = mRecView.getChildViewHolder(view);
if (vh instanceof DocumentHolder) {
DocumentHolder dh = (DocumentHolder) vh;
if (dh.mEventListener != null) {
dh.mEventListener.onActivate(dh);
return true;
}
}
}
return super.performAccessibilityActionForItem(recycler, state, view, action, args);
}
};
SpanSizeLookup lookup = mAdapter.createSpanSizeLookup();
if (lookup != null) {
mLayout.setSpanSizeLookup(lookup);
}
mRecView.setLayoutManager(mLayout);
mGestureDetector = new ListeningGestureDetector(this.getContext(), mDragHelper, new GestureListener());
mRecView.addOnItemTouchListener(mGestureDetector);
// TODO: instead of inserting the view into the constructor, extract listener-creation code
// and set the listener on the view after the fact. Then the view doesn't need to be passed
// into the selection manager.
mSelectionManager = new MultiSelectManager(mRecView, mAdapter, state.allowMultiple ? MultiSelectManager.MODE_MULTIPLE : MultiSelectManager.MODE_SINGLE, null);
mSelectionManager.addCallback(new SelectionModeListener());
mModel = new Model();
mModel.addUpdateListener(mAdapter);
mModel.addUpdateListener(mModelUpdateListener);
// Make sure this is done after the RecyclerView is set up.
mFocusManager = new FocusManager(context, mRecView, mModel);
mTuner = FragmentTuner.pick(getContext(), state);
mClipper = new DocumentClipper(context);
final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
boolean svelte = am.isLowRamDevice() && (mType == TYPE_RECENT_OPEN);
mIconHelper.setThumbnailsEnabled(!svelte);
// Kick off loader at least once
getLoaderManager().restartLoader(LOADER_ID, null, this);
}
use of android.support.v4.content.Loader in project AndroidForiOS by smbarne.
the class TripListFragment method onViewCreated.
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mViewHolder.populate(view);
mTripArrayAdapter = new TripArrayAdapter(getActivity());
mViewHolder.tripListView.setAdapter(mTripArrayAdapter);
mViewHolder.tripListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (mListener != null) {
mListener.onTripSelected(mTripArrayAdapter.getItem(position));
}
}
});
getLoaderManager().initLoader(0, savedInstanceState, new LoaderManager.LoaderCallbacks<TripList>() {
@Override
public Loader<TripList> onCreateLoader(int id, Bundle args) {
return new DataManager.SubwayLineLoader(getActivity(), mLineType);
}
@Override
public void onLoadFinished(Loader<TripList> loader, TripList data) {
setTripList(data);
if (mViewHolder != null) {
int displayIndex = mViewHolder.viewFlipper.indexOfChild(mViewHolder.tripListView);
mViewHolder.viewFlipper.setDisplayedChild(displayIndex);
}
}
@Override
public void onLoaderReset(Loader<TripList> loader) {
}
}).forceLoad();
}
use of android.support.v4.content.Loader in project WordPress-Android by wordpress-mobile.
the class MediaBrowserActivity method getRealPathFromContentURI.
private String getRealPathFromContentURI(Uri contentUri) {
if (contentUri == null)
return null;
String[] proj = { android.provider.MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(this, contentUri, proj, null, null, null);
Cursor cursor = loader.loadInBackground();
if (cursor == null)
return null;
int column_index = cursor.getColumnIndex(proj[0]);
if (column_index == -1) {
cursor.close();
return null;
}
String path;
if (cursor.moveToFirst()) {
path = cursor.getString(column_index);
} else {
path = null;
}
cursor.close();
return path;
}
use of android.support.v4.content.Loader in project WordPress-Android by wordpress-mobile.
the class MeFragment method getRealPathFromContentURI.
private String getRealPathFromContentURI(Uri contentUri) {
if (contentUri == null)
return null;
String[] proj = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(getActivity(), contentUri, proj, null, null, null);
Cursor cursor = loader.loadInBackground();
if (cursor == null)
return null;
int column_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
if (column_index == -1) {
cursor.close();
return null;
}
String path;
if (cursor.moveToFirst()) {
path = cursor.getString(column_index);
} else {
path = null;
}
cursor.close();
return path;
}
Aggregations