人の名前を含む ListView と、検索ウィジェットを含む ActionBar があります。私がやりたいことは、検索クエリを部分文字列として含む ListView の最初の項目にフォーカスすることです。
たとえば、「John Doe」という名前の人がいて、「hn D」を検索すると、部分文字列として「hn D」を含む最初の行である限り、その行にフォーカスする必要があります。
部分文字列を含まないアイテムをリストから削除したくないことに注意してください。
こんな感じでリストを作りました。
activity_main.xml
<ListView android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
list_item.xml
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16sp"
android:textStyle="bold" />
MainActivity.java
String[] names = {"John Doe","Mark Marky","Donald Duck","Derp Derpson"};
lv = (ListView) findViewById(R.id.list_view);
adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.name, names);
lv.setAdapter(adapter);
また、検索ウィジェットを備えたアクション バーもあり、onQueryTextChange()
andonQueryTextSubmit()
メソッドを実装しました。
問題は、これらのメソッドでリストを検索する方法と、適切なリスト項目にフォーカスする方法です。