我想使用android.support.v7.widget.SearchView但是要进行布局。我正在使用Filter,在publishResults中我获取数据但不显示。这是我的xml:
<LinearLayout
android:id="@+id/contactPickerContainer"
android:layout_width="match_parent"
android:layout_height="80dp"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_gravity="top"
android:layout_margin="0dp"
android:background="@drawable/border_background"
android:gravity="center_vertical"
android:orientation="horizontal"
>
<android.support.v7.widget.SearchView
android:id="@+id/addressSearchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:hint="@string/enter_recipients"
android:padding="10dp"
android:textColor="#444444"/>
<ImageView
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="10dp"
android:src="@drawable/contact_icon"
/>
</LinearLayout>
在我的活动中,我有以下内容:
addressSearchView = (SearchView) findViewById(R.id.addressSearchView);
doSearch(addressSearchView);
private final void doSearch(final SearchView searchView) {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(final String newText) {
getAdapter().getFilter().filter(newText);
return true;
}
});
}
在过滤器中:
@Override
public final Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence){
getContactList();
final String charString = charSequence.toString();
if (charString.isEmpty()) {
filteredContacts = contacts;
} else {
final List<ContactModel> filteredList = new ArrayList<>();
for (final ContactModel contactModel : contacts) {
if
(contactModel.getName().toLowerCase().contains(charString)) {
filteredList.add(contactModel);
}
}
filteredContacts = filteredList;
}
final FilterResults filterResults = new FilterResults();
filterResults.values = filteredContacts;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults
results) {
filteredContacts = (List<ContactModel>) results.values;
notifyDataSetChanged();
}
};
}
我在publishResults方法中获得结果但没有显示任何内容。在这种情况下,我无法使用菜单栏。
答案 0 :(得分:0)
由于我是android的新手,我甚至不知道searchview组件仅用于搜索。结果显示在ListView中(至少在我的场景中)并创建一个ListViewAdapter。帮助我并帮助其他人的是:
http://abhiandroid.com/ui/searchview
这是您需要根据请求处理列表视图的可见性的最后一个示例。