使用搜索视图过滤 gridview
Filter gridview Using Search View
我有 gridview
和 ImageView
,我想给它添加搜索功能,但我不知道该怎么做 我的问题是有没有办法使用搜索视图gridview
?
这是我的 gridview
适配器
public class GridViewWordAdapter extends BaseAdapter {
private ImageLoader imageLoader;
private Context context;
private List<Word> movieItems;
LayoutInflater inflater;
public GridViewWordAdapter(Context context, List<Word> movieItems) {
this.context = context;
this.movieItems = movieItems;
}
@Override
public int getCount() {
return movieItems.size();
}
@Override
public Object getItem(int position) {
return movieItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
static class ViewHolderItem {
TextView textViewItem;
TextView textViewen;
TextView textViewar;
TextView textViewtag;
TextView textViewaudio;
NetworkImageView networkImageView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View gridViewAndroid;
if (convertView == null) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
gridViewAndroid = inflater.inflate(R.layout.gridview_word_layout, null);
} else {
gridViewAndroid = (View) convertView;
}
TextView textViewen = (TextView) gridViewAndroid.findViewById(R.id.tv_word_en);
TextView textViewar = (TextView) gridViewAndroid.findViewById(R.id.tv_word_ar);
TextView textViewtag = (TextView) gridViewAndroid.findViewById(R.id.tv_word_tagoi);
TextView textViewaudio = (TextView) gridViewAndroid.findViewById(R.id.tv_audio);
NetworkImageView networkImageView = (NetworkImageView) gridViewAndroid.findViewById(R.id.android_gridview_word_image);
Word word = movieItems.get(position);
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(word.getImg(), ImageLoader.getImageListener(networkImageView,
R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
networkImageView.setImageUrl(word.getImg(), imageLoader);
textViewen.setText(word.getEnglish());
textViewar.setText(word.getArabic());
textViewtag.setText(word.getTagoi());
textViewaudio.setText(word.getAudio());
return gridViewAndroid;
}
}
我希望得到更多帮助
提前致谢
这是在网格列表中使用搜索的简单方法:
首先制作 2 个列表<>,一个主要的,另一个用于搜索目的。
private List<Word> movieItems = new ArrayList<>();
private List<Word> movieItemsSearch = new ArrayList<>();
您必须对两个数组执行 add/clear/remove 操作。
现在使用此代码过滤数据:
if (searchTerm.length() > 0) {
movieItems.clear();
for (Word s : movieItemsSearch) {
String ss = s.getEnglish().toLowerCase();
if (ss.contains(searchTerm.toLowerCase())) {
movieItems.add(s);
}
}
adapter.notifyDataSetChanged();
} else {
movieItems.clear();
for (Word s : movieItemsSearch) {
movieItems.add(s);
}
adapter.notifyDataSetChanged();
}
这里searchTerm是用户在搜索框中输入的字符串值。
另一种方法是对您的适配器实施 Filterable
。请喜欢本教程以获取更多信息https://coderwall.com/p/zpwrsg/add-search-function-to-list-view-in-android。
基本上,在搜索中,您可以在实施 Filterable
后调用它来过滤结果
friendListAdapter.getFilter().filter(newText);
我有 gridview
和 ImageView
,我想给它添加搜索功能,但我不知道该怎么做 我的问题是有没有办法使用搜索视图gridview
?
这是我的 gridview
适配器
public class GridViewWordAdapter extends BaseAdapter {
private ImageLoader imageLoader;
private Context context;
private List<Word> movieItems;
LayoutInflater inflater;
public GridViewWordAdapter(Context context, List<Word> movieItems) {
this.context = context;
this.movieItems = movieItems;
}
@Override
public int getCount() {
return movieItems.size();
}
@Override
public Object getItem(int position) {
return movieItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
static class ViewHolderItem {
TextView textViewItem;
TextView textViewen;
TextView textViewar;
TextView textViewtag;
TextView textViewaudio;
NetworkImageView networkImageView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View gridViewAndroid;
if (convertView == null) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
gridViewAndroid = inflater.inflate(R.layout.gridview_word_layout, null);
} else {
gridViewAndroid = (View) convertView;
}
TextView textViewen = (TextView) gridViewAndroid.findViewById(R.id.tv_word_en);
TextView textViewar = (TextView) gridViewAndroid.findViewById(R.id.tv_word_ar);
TextView textViewtag = (TextView) gridViewAndroid.findViewById(R.id.tv_word_tagoi);
TextView textViewaudio = (TextView) gridViewAndroid.findViewById(R.id.tv_audio);
NetworkImageView networkImageView = (NetworkImageView) gridViewAndroid.findViewById(R.id.android_gridview_word_image);
Word word = movieItems.get(position);
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(word.getImg(), ImageLoader.getImageListener(networkImageView,
R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
networkImageView.setImageUrl(word.getImg(), imageLoader);
textViewen.setText(word.getEnglish());
textViewar.setText(word.getArabic());
textViewtag.setText(word.getTagoi());
textViewaudio.setText(word.getAudio());
return gridViewAndroid;
}
}
我希望得到更多帮助 提前致谢
这是在网格列表中使用搜索的简单方法:
首先制作 2 个列表<>,一个主要的,另一个用于搜索目的。
private List<Word> movieItems = new ArrayList<>();
private List<Word> movieItemsSearch = new ArrayList<>();
您必须对两个数组执行 add/clear/remove 操作。
现在使用此代码过滤数据:
if (searchTerm.length() > 0) {
movieItems.clear();
for (Word s : movieItemsSearch) {
String ss = s.getEnglish().toLowerCase();
if (ss.contains(searchTerm.toLowerCase())) {
movieItems.add(s);
}
}
adapter.notifyDataSetChanged();
} else {
movieItems.clear();
for (Word s : movieItemsSearch) {
movieItems.add(s);
}
adapter.notifyDataSetChanged();
}
这里searchTerm是用户在搜索框中输入的字符串值。
另一种方法是对您的适配器实施 Filterable
。请喜欢本教程以获取更多信息https://coderwall.com/p/zpwrsg/add-search-function-to-list-view-in-android。
基本上,在搜索中,您可以在实施 Filterable
friendListAdapter.getFilter().filter(newText);