在Pull to refresh listview中禁用加载

时间:2013-10-03 12:04:33

标签: android listview

我正在按照此链接中的提示刷新https://github.com/chrisbanes/Android-PullToRefresh。一切正常。但是当我的列表项完成时,加载图标和拉动刷新标签仍然可见。那么,如何在列表末尾到达时禁用滚动?

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();

    }



}

1 个答案:

答案 0 :(得分:5)

对于可能有类似问题的其他人:

你不必这样实现它

mainListView.post(new Runnable() {

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

取而代之的是:

mainListView.onRefreshComplete();

我注意到了另一件事,而不是保存旧的pos值以回到它,为什么不使用notifyDataSetChanged它就像它一样离开列表的位置,只是尝试不重新安排你的列表,即:mainBooksList = ...,而不是试试这个:

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

瞧!

希望这有助于某人