Chức năng tìm kiếm trực tiếp trên ListView Android
Một ví dụ đơn giản của chức năng tìm kiếm trực tiếp trong Android sử dụng ListView qua các bước sau.
Bước 1: Mở Android Studio, tạo một Project mới với Empty Activity.
Bước 2: Mở activity_main.xml file (đường dẫn: res/layout/activity_main.xml) thêm vào đoạn code sau:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <EditText android:id="@+id/edsearch" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_search" android:hint="Search" android:inputType="text" /> <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content"></ListView> </LinearLayout>
Bước 3: Mở MainActivity.java và thêm vào đoạn code sau:
package com.dev4u.ntc.livesearchlistview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import java.util.ArrayList; import java.util.Arrays; public class MainActivity extends AppCompatActivity { String[] items; ArrayList<String> listItems; ArrayAdapter<String> adapter; ListView listView; EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listview); editText = (EditText) findViewById(R.id.edsearch); initList(); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { MainActivity.this.adapter.getFilter().filter(s); } @Override public void afterTextChanged(Editable s) { } }); } public void initList() { items = new String[]{"Java", "JavaScript", "C#", "PHP", "С++", "Python", "C", "SQL", "Ruby", "Objective-C"}; listItems = new ArrayList<>(Arrays.asList(items)); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); listView.setAdapter(adapter); } }
Source code: https://github.com/trongcong/LiveSearchListView