我有一个ListView与名称的人和一个ActionBar与搜索小部件。 我想要做的是将包含搜索查询的ListView中的第一项聚焦为子字符串。Android 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()
和onQueryTextSubmit()
方法。
问题是如何在这些方法中搜索列表,以及如何关注适当的列表项?
嗯,我不太确定,但我认为你可以使用'String.co获取包含你的搜索的第一个元素的索引ntains()'在'String []'的每个元素上。如果你得到这个索引,你可以使用'mListView.requestFocus();'&'mListView.setSelection(position);' –