亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

android 列表如何實現搜索功能

小樊
81
2024-11-27 05:01:45
欄目: 編程語言

在Android中,為列表實現搜索功能通常涉及以下幾個步驟:

  1. 創建布局文件:確保你的列表項有一個唯一的ID,并且你的搜索視圖也在布局文件中定義好。

  2. 創建適配器:如果你還沒有創建適配器,你需要創建一個適配器來綁定數據到列表項。

  3. 實現搜索邏輯:在你的Activity或Fragment中實現搜索邏輯,包括過濾數據和更新UI。

以下是一個簡單的示例,展示了如何在Android中為列表實現搜索功能:

1. 創建布局文件

假設你有一個list_item.xml文件來定義列表項的布局,以及一個activity_main.xml文件來定義主活動布局,其中包含一個SearchView和一個ListView

<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <SearchView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:queryHint="Search..." />

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

2. 創建適配器

假設你有一個MyAdapter類來管理列表項的數據綁定。

public class MyAdapter extends BaseAdapter {
    private List<String> data;
    private List<String> filteredData;
    private LayoutInflater inflater;

    public MyAdapter(List<String> data) {
        this.data = data;
        this.filteredData = new ArrayList<>(data);
        inflater = LayoutInflater.from(getContext());
    }

    @Override
    public int getCount() {
        return filteredData.size();
    }

    @Override
    public Object getItem(int position) {
        return filteredData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list_item, parent, false);
        }
        TextView textView = convertView.findViewById(R.id.textView);
        textView.setText(filteredData.get(position));
        return convertView;
    }

    public void filter(String query) {
        filteredData.clear();
        if (query == null || query.isEmpty()) {
            filteredData.addAll(data);
        } else {
            query = query.toLowerCase().trim();
            for (String item : data) {
                if (item.toLowerCase().contains(query)) {
                    filteredData.add(item);
                }
            }
        }
        notifyDataSetChanged();
    }
}

3. 實現搜索邏輯

在你的Activity或Fragment中實現搜索邏輯。

public class MainActivity extends AppCompatActivity {
    private SearchView searchView;
    private ListView listView;
    private MyAdapter adapter;
    private List<String> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        searchView = findViewById(R.id.searchView);
        listView = findViewById(R.id.listView);

        data = new ArrayList<>();
        // 假設你有一些數據
        for (int i = 1; i <= 20; i++) {
            data.add("Item " + i);
        }

        adapter = new MyAdapter(data);
        listView.setAdapter(adapter);

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                adapter.filter(newText);
                return true;
            }
        });
    }
}

解釋

  1. 布局文件activity_main.xml中定義了一個SearchView和一個ListView
  2. 適配器MyAdapter類管理數據綁定和過濾邏輯。
  3. 搜索邏輯:在MainActivity中,我們設置了SearchView的監聽器來處理搜索文本的變化,并調用適配器的filter方法來更新過濾后的數據。

這樣,當用戶在SearchView中輸入文本時,列表會根據輸入的文本進行過濾,并實時更新顯示的結果。

0
澄江县| 金寨县| 旺苍县| 南开区| 桦川县| 郯城县| 临江市| 调兵山市| 瓦房店市| 泊头市| 三江| 高台县| 云梦县| 五寨县| 荃湾区| 贡觉县| 玛纳斯县| 乾安县| 洛扎县| 喀喇沁旗| 宜阳县| 拜城县| 临汾市| 济阳县| 玉田县| 大理市| 绍兴县| 天等县| 唐河县| 青阳县| 进贤县| 鄂托克前旗| 台东县| 满洲里市| 资阳市| 乐业县| 利津县| 吉安市| 高清| 汝阳县| 韶山市|