使用搜索视图过滤 gridview

Filter gridview Using Search View

我有 gridviewImageView,我想给它添加搜索功能,但我不知道该怎么做 我的问题是有没有办法使用搜索视图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);