Подгрузка данных ListFragment Android
Подскажите, пожалуйста, почему не подгружаются данные. Никаких ошибок нет, все хорошо. Но данные при скроле не подгружаются. Изначально у меня это было реализовано в Activity, но сейчас возникла необходимость передалать в Фрагменте, все работает, кроме подгрузки, уже мозг разрывается, не могу понять. Помогите, пожалуйста.
public class Fragment1 extends ListFragment {
private static final String TAG_HREF = "href";
private ProgressDialog pDialog;
HListAdapters adapter;
ArrayList<homelist> homelist;
PullToRefresh list;
String baseURL="http://auto.vesti.ru/utf/auto.json?type=homelist&offset=";//*CHANGED BY ME
boolean done = true;//*CHANGED BY ME
int count = 0;//*CHANGED BY ME
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.lists,container, false);
list = (PullToRefresh) view.findViewById(R.id.list);
return view;
}
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getActivity())
.threadPriority(Thread.NORM_PRIORITY - 2)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheSize(5 * 1024 * 1024)
.tasksProcessingOrder(QueueProcessingType.LIFO)
.defaultDisplayImageOptions(defaultOptions)
.build();
L.writeLogs(true);
ImageLoader.getInstance().init(config);
homelist = new ArrayList<homelist>();
new ListAsynTask().execute(baseURL+count);//*CHANGED BY ME
adapter = new HListAdapters(getActivity(), R.layout.list_item, homelist);
list.setAdapter(adapter);
}
public class ListAsynTask extends AsyncTask<String, Void, Boolean> {
//------ADDED BY ME
int totalItemCount=0;
public ListAsynTask() {
}
public ListAsynTask(int totalItemCount) {
this.totalItemCount=totalItemCount;
}
//------
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
}
@Override
protected Boolean doInBackground(String... params) {
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(params[0]);
HttpResponse response = client.execute(get);
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity, "utf-8");
JSONArray jsonarr = new JSONArray(data);
for (int i = 0; i < jsonarr.length(); i++) {
homelist hmlist = new homelist(); //объект назван также как и ArrayList НЕЛЬЗЯ ТАК!!!
JSONObject c = jsonarr.getJSONObject(i);
hmlist.setTitle(c.getString("title"));
hmlist.setPictures(c.getString("picture"));
hmlist.setHref(c.getString("href"));
hmlist.setDate(c.getString("date"));
if (!homelist.contains(hmlist))//*ADDED CHECK BY ME
homelist.add(hmlist);
}
return true;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if(result == false){
}else {
if (pDialog.isShowing())
pDialog.dismiss();
list.onRefreshComplete();
adapter.notifyDataSetChanged();
list.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (++firstVisibleItem + visibleItemCount > totalItemCount) {
if (totalItemCount != 0 ){
if (done){//проверка
done = false;
count = count + 25;
new ListAsynTask(totalItemCount).execute(baseURL+count);
}
}
}
}
});
if (totalItemCount != 0 ){
list.post(new Runnable() {
public void run() {
if (done) {
list.setSelection(totalItemCount - 1);
}
}
});
}
done = true;
//----------
}
}
}
}
Источник: Stack Overflow на русском