I am trying to implement ActionBar-PullToRefresh in my application. Activity has a fragment in it, and the fragment has a list in it. Implementing a listview with a custom adapter.
I tried to implement it using the QuickStart-ABS manual on github, but attraction does not work. I have the feeling that I am not initializing PullToRefresh correctly. Please see my code below ...
fragment_news_list.xml
<?xml version="1.0" encoding="utf-8"?>
<uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ptr_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listview_news_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout>
NewsListFragment.java
import java.util.ArrayList;
import java.util.List;
import uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.util.LruCache;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragment;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;
public class NewsListFragment extends SherlockFragment implements
OnRefreshListener {
ProgressDialog pd;
ImageLoader imageLoader;
JsonArrayRequest jsArrayRequest;
Database db;
ListView listview;
List<NewsItem> newsItems = new ArrayList<NewsItem>();
NewsAdapter adapter;
NewsDbAdapter mNewsDbAdapter;
private PullToRefreshLayout mPullToRefreshLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mNewsDbAdapter = DatabaseHelper.get(
getActivity().getApplicationContext()).getNewsDbAdapter();
View view = inflater.inflate(R.layout.fragment_news_list, container,
false);
pd = new ProgressDialog(getActivity());
pd.setMessage("Loading...");
pd.show();
pd.setCancelable(true);
newsItems = mNewsDbAdapter.getNewsTitles();
adapter = new NewsAdapter(getActivity(), newsItems);
listview = (ListView) view.findViewById(R.id.listview_news_list);
listview.setAdapter(adapter);
pd.dismiss();
return view;
}
public class NewsAdapter extends ArrayAdapter<NewsItem> {
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewGroup viewGroup = (ViewGroup) view;
mPullToRefreshLayout = new PullToRefreshLayout(viewGroup.getContext());
ActionBarPullToRefresh.from(getActivity())
.insertLayoutInto(viewGroup)
.theseChildrenArePullable(android.R.id.list, android.R.id.empty)
.listener(this)
.setup(mPullToRefreshLayout);
}
@Override
public void onRefreshStarted(View view) {
listview.setVisibility(View.INVISIBLE);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
mPullToRefreshLayout.setRefreshComplete();
if (getView() != null) {
listview.setVisibility(View.VISIBLE);
}
}
}.execute();
}
}
Where am I mistaken? If someone has an example with a snippet with a list, share the link here.
Thanks!!!
[EDIT]
changed it
theseChildrenArePullable(android.R.id.list, android.R.id.empty)
to
theseChildrenArePullable(R.id.listview_news_list, android.R.id.empty)
and he worked ...
source
share