鍍金池/ 問(wèn)答/Android/ Android List有數(shù)據(jù)若干,比如“北京”,“上?!?。輸入北京,如果lis

Android List有數(shù)據(jù)若干,比如“北京”,“上?!?。輸入北京,如果list里有這條數(shù)據(jù)就展示到listview中

如題:List有數(shù)據(jù)若干,比如“北京”,“上?!?。輸入北京,如果list里有這條數(shù)據(jù)就展示到listview中

回答
編輯回答
局外人
題主說(shuō)的應(yīng)該是建議搜索(聯(lián)想輸入)的功能吧

這類(lèi)問(wèn)題分兩步走:

  1. 數(shù)據(jù)檢索:
    A. 數(shù)據(jù)來(lái)源通常是:本地?cái)?shù)據(jù)庫(kù)服務(wù)器接口
    B. 不論是本地還是服務(wù)器數(shù)據(jù),都是使用Loader來(lái)實(shí)現(xiàn),它能幫你處理頁(yè)面生命周期的很多問(wèn)題
    C. 如果你用AsyncTask那就需要根據(jù)頁(yè)面的生命周期自行管理檢索數(shù)據(jù)的任務(wù)(關(guān)閉頁(yè)面時(shí)的資源釋放、取消界面展示的回調(diào)函數(shù))
  2. 數(shù)據(jù)展示:
    A. ListView or RecyclerView二選一
    B. 當(dāng)Loader加載完,它會(huì)自行調(diào)用LoaderCallbacks.OnLoadFinished(Loader<D>, D),也就是在這個(gè)回調(diào)中,將數(shù)據(jù)刷新到列表中

2017年4月15日 05:51
編輯回答
情皺

首先listview的數(shù)據(jù)源肯定不能是這個(gè)包含了若干數(shù)據(jù)的list了,這里叫它mDatas。
大致的邏輯如下:

        List<String> list = new ArrayList<>(); //包含了若干數(shù)據(jù)的集合
        List<String> mDatas = new ArrayList<>(); //adapter中使用的集合
        if (list.contains("北京")) {
            mDatas.add("北京");
            mAdapter.notifyDataSetChanged();
        }
2018年7月20日 13:25