package by.istin.android.xcore.plugin.actionbarpulltorefresh;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import by.istin.android.xcore.fragment.IRefresh;
import by.istin.android.xcore.plugin.IFragmentPlugin;
import uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
/**
* Created by IstiN on 29.6.13.
*/
public class ActionBarPullToRefreshFragmentPlugin implements IFragmentPlugin {
private int pullToRefreshId = -1;
public ActionBarPullToRefreshFragmentPlugin(int id) {
pullToRefreshId = id;
}
private PullToRefreshLayout findLayout(View view) {
if (pullToRefreshId == -1) {
if (view instanceof PullToRefreshLayout) {
return (PullToRefreshLayout) view;
} else {
return null;
}
} else {
return (PullToRefreshLayout) view.findViewById(pullToRefreshId);
}
}
@Override
public void onCreateView(final Fragment fragment, View view, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Now find the PullToRefreshLayout to setup
PullToRefreshLayout pullToRefresh = findLayout(view);
if (pullToRefresh == null) {
return;
}
// Now setup the PullToRefreshLayout
ActionBarPullToRefresh.from(fragment.getActivity())
.theseChildrenArePullable(android.R.id.list)
.listener(new OnRefreshListener() {
@Override
public void onRefreshStarted(View view) {
if (fragment != null && fragment instanceof IRefresh) {
((IRefresh)fragment).refresh();
};
}
})
.setup(pullToRefresh);
}
@Override
public void onCreateLoader(Fragment fragment, Loader<Cursor> loader, int id, Bundle args) {
}
@Override
public void onLoadFinished(Fragment fragment, Loader<Cursor> loader, Cursor cursor) {
}
@Override
public void onActivityCreated(Fragment fragment, Bundle savedInstanceState) {
}
@Override
public void onStatusResultReceiverStart(Fragment fragment, Bundle resultData) {
}
@Override
public void onStatusResultReceiverError(Fragment fragment, Exception exception) {
View view = fragment.getView();
if (view == null) {
return;
}
// Now find the PullToRefreshLayout to setup
PullToRefreshLayout pullToRefresh = findLayout(view);
if (pullToRefresh == null) {
return;
}
pullToRefresh.setRefreshComplete();
}
@Override
public void onStatusResultReceiverDone(Fragment fragment, Bundle resultData) {
View view = fragment.getView();
if (view == null) {
return;
}
// Now find the PullToRefreshLayout to setup
PullToRefreshLayout pullToRefresh = findLayout(view);
if (pullToRefresh == null) {
return;
}
pullToRefresh.setRefreshComplete();
}
@Override
public void onStatusResultReceiverCached(Fragment fragment, Bundle resultData) {
View view = fragment.getView();
if (view == null) {
return;
}
// Now find the PullToRefreshLayout to setup
PullToRefreshLayout pullToRefresh = findLayout(view);
if (pullToRefresh == null) {
return;
}
pullToRefresh.setRefreshComplete();
}
@Override
public boolean setAdapterViewImage(Fragment fragment, ImageView v, String value) {
return false;
}
@Override
public void createAdapter(Fragment fragment, BaseAdapter baseAdapter, FragmentActivity activity, Cursor cursor) {
}
}