簡體   English   中英

如何使用BaseAdapter刷新ListView

[英]How can I refresh my ListView using BaseAdapter

我嘗試使用notifyDataSetChanged()刷新列表視圖,但這被標記為紅色。 我使用ListView像擴展適配器一樣,所以notifyDataSetChaned它應該可以工作,但是可以。

下面是我的聲明ListView和ArrayList。

ListView listview;
ArrayList<ListData> myList = new ArrayList<>();

我以這種方式設置清單:

listview = (ListView) findViewById(R.id.listView);
listview.setAdapter(new MyBaseAdapter(this, myList));

我也使用setOnScrollListener,並且希望SROLL_STATE = 0時刷新列表視圖。

    listview.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            int position = listview.getFirstVisiblePosition();

            SCROLL_STATE = position;

            if (SCROLL_STATE == 0) {
                listview.notifyDataSetChanged();  // Here is a problem, because it's not work
            }

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

        }
    });

notifyDataSetChanged()BaseAdapter類的方法,而不是 ListView類的方法。 因此,在邏輯上和語法上調用listView.notifyDatasSetChanged();是不正確的listView.notifyDatasSetChanged();

將此行替換為

listView.getAdapter().notifyDataSetChanged();

祝一切順利 :)

定義一個適配器對象,MyBaseAdapter adapter = new MyBaseAdapter(this,myList); adapter.notifyDataSetChanged();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM