android 控件 彈框+ 搜索框

dialog+ SearchView + ListView

1.效果:


image.png

1.一個searchView+ListView 視圖:#R(dialog_search.xml)

 <SearchView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:iconifiedByDefault="false"
        android:queryHint="請輸入搜索內容" />

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

2.添加dialog

 Dialog dialog = new Dialog(this);
 LayoutInflater inflater=getLayoutInflater();
 final View view=inflater.inflate(R.layout.dialog_search, null);
 dialog.setContentView(view);
 dialog.show();

彈框顯示結果為:


image.png

3.為ListView配置數(shù)據

通過view 獲取SearchView、 ListView

 SearchView searchView = (SearchView)view.findViewById(R.id.searchView);
        ListView mListView = (ListView)view.findViewById(R.id.listView);
        //設置該搜索框默認是否自動縮小為圖標
        searchView.setIconifiedByDefault(false);
        //MainActivity.this :context     listDate:數(shù)據源
        final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, listDate);
        mListView.setAdapter(adapter);
        //true表示listview獲得當前焦點的時候,與相應用戶輸入的匹配符進行比對,篩選出匹配的ListView的列表中的項
        mListView.setTextFilterEnabled(true);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
        {
            // 當點擊搜索按鈕時觸發(fā)該方法
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }
            // 當搜索內容改變時觸發(fā)該方法
            @Override
            public boolean onQueryTextChange(String newText) {
                if (!TextUtils.isEmpty(newText)){
                    //使用此方法搜索會出現(xiàn)一個黑色框框
                    //mListView.setFilterText(newText);
                    //未顯示效果采用下面方法 不會出現(xiàn)黑色框
                    adapter.getFilter().filter(newText);
                }else{
                    //mListView.setFilterText(newText);
                    adapter.getFilter().filter("");
                }
                return false;
            }
        });
    }

寫到 配上數(shù)據就能實現(xiàn)上述效果


image.png

如果想要為listView 添加點擊事件:

 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                   //xxxxxxxxxxxxx
            }
        });

如果直接通過position獲取listDate數(shù)據,(由于搜索框的過濾條件 整個position的范圍實際上是縮小過了 很難通過listDate獲取選中的值)

可以通過適配器獲取選中的值

 
 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                   String item = (String)adapter.getItem(position);
                    //xxxxxxxxxxxx 其他操作
                   dialog.dismiss();
            }
        });
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容