Подгрузка данных ListFragment Android

Рейтинг: 0Ответов: 1Опубликовано: 07.12.2014

Подскажите, пожалуйста, почему не подгружаются данные. Никаких ошибок нет, все хорошо. Но данные при скроле не подгружаются. Изначально у меня это было реализовано в 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;
            //----------
        }
    }
}

}

Ответы

▲ 1Принят

@Alerx, комментировать более не могу, ограничение по кол-у, видать.

Я не понял, что вы имеете в виду, говоря:

да, именно он

в ответ на вопрос, вызывается ли этот кусок кода.