Maverick
Maverick

Reputation: 394

Disable loading in Pull to refresh listview

I am having Pull to Refresh https://github.com/chrisbanes/Android-PullToRefresh as given in this link. Everything works fine. But when my list item finishes, the loading icon and pull to refresh label is still visible. So, how to disable the scrolling when end of list reached?

mainListView.setOnRefreshListener(new OnRefreshListener() {

                @Override
                public void onRefresh(PullToRefreshBase refreshView) {

                                        String total_bk_count = subCategory                                                 .getTotal_Book_Count();
                                        count_of_book = Integer.parseInt(total_bk_count);
                                        listCountt = mainbooksAdpater.getCount();
                                        Log.e("StroreActivity","Total book count---====----====---+"+count_of_book);
                                        Log.e("StroreActivity","list Count---====----====---+"+listCountt);
                                        if(listCountt < count_of_book)
                                        {

                                            int bookCount = Common.getBookCountNumber();
                                            Common.setBookCount(bookCount+1);
                                            String refresh_Pull_Url = Common.getUrlForeCategoryBooks(id, Common.NUMBER_OF_BOOKS_PER_REQUEST);
                                            Log.e("Rathis to Check url", Common.getUrlForeCategoryBooks(id, Common.NUMBER_OF_BOOKS_PER_REQUEST));
                                            PulltoRefreshAsync onCatBooksTaskScroll = new PulltoRefreshAsync(Common.getUrlForeCategoryBooks(id, Common.NUMBER_OF_BOOKS_PER_REQUEST));
                                            onCatBooksTaskScroll.execute();

                                        Log.e("StroreActivity","Total Book count::" + book_count_no);

                                    }
                                        else
                                        {

                                        mainListView.setMode(Mode.DISABLED);    
                                        Toast.makeText(getApplicationContext(), "end of list", Toast.LENGTH_SHORT).show();

                                        }
                                    }
                                });

Asynctask Class:

public class PulltoRefreshAsync extends AsyncTask<Object,Object,Object> {
    int refreshCount;
    String refresh_URL;
    public PulltoRefreshAsync(String url) {
        refresh_URL = url;

    }

    /*
     * PulltoRefreshAsync(int i) { refreshCount = i; }
     */

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Log.e("Checking Purpose", refresh_URL);




    }

    @Override
    protected String doInBackground(Object... arg0) {
        JsonParserRefresh jp = new JsonParserRefresh();
        Log.e("StroreActivity","Array to String::" + refresh_URL);
        String jsonString = jp.getJSONFromURL(refresh_URL);
        Log.e("StroreActivity","JsonString::" + jsonString);
        jsonParseForCategoryBooksGridScroll(jsonString);
        return null;
    }

    @Override
    protected void onPostExecute(Object result) {
        super.onPostExecute(result);
        /*
         * if(mProgressDialog.isShowing()) { mProgressDialog.dismiss(); }
         */

        final MainBooksAdapter mainbooksAdpater = new MainBooksAdapter(
                StoreActivity.this, R.layout.aa, mainBooksList);
        final int old_pos = mainListView.getRefreshableView()
                .getFirstVisiblePosition() + 1;
        mainListView.setAdapter(mainbooksAdpater);

        tvvisiblebookCount.setText("" + mainbooksAdpater.getCount());

        /*if(listCountt < count_of_book)
        {

            mainListView.setMode(Mode.DISABLED);*/
        mainListView.post(new Runnable() {

            @Override
            public void run() {
                mainListView.onRefreshComplete();
                mainListView.getRefreshableView().setSelection(old_pos);
            }
        });
        //}
        mainbooksAdpater.notifyDataSetChanged();

    }



}

Upvotes: 1

Views: 3110

Answers (1)

TootsieRockNRoll
TootsieRockNRoll

Reputation: 3288

For other people who might have similat issue:

you don't have to implement it this way

mainListView.post(new Runnable() {

            @Override
            public void run() {
                mainListView.onRefreshComplete();
                mainListView.getRefreshableView().setSelection(old_pos);
            }
        });

instead do just like this :

mainListView.onRefreshComplete();

one more thing I noticed, instead of saving the old pos value to get back to it, why not just use notifyDataSetChanged it leaves the position of the list the way it is, just try not to re-instanciate you list, i.e: mainBooksList = ..., instead try this:

mainBooksList.clear();
mainBooksList.addAll(YOUR DATA);
adapter.notifyDataSetChanged();

voila!

hope this helps someone

Upvotes: 5

Related Questions