android - 用于 Json 解析数据的搜索视图
问题描述
我已经在列表视图中解析了数据并显示出来。我必须在显示的数据中实现 searchview。我有一个 getmTitle () 函数,它在 listview 中具有列表的标题。现在,如果我在 searchview 中写入,listview 应该选择键入的标题并显示。
public class ImageListActivity {
private String id;
private String title;
private String url_s;
public ImageListActivity(String id, String title, String url_s) {
this.id = id;
this.title = title;
this.url_s = url_s;
}
public String getmId() {
return id;
}
public String getmTitle() {
return title;
}
public String getmUrl_s() {return url_s;}
}
下面是我的适配器类:
public class AdapterActivity extends ArrayAdapter<ImageListActivity> {
public AdapterActivity(Activity context, ArrayList<ImageListActivity> image) {
super(context, 0, image);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.default_layout, parent, false);
}
ImageListActivity currentWord = getItem(position);
ImageView imageView = (ImageView) listItemView.findViewById(R.id.flickr_image);
try {
Picasso.get()
.load(currentWord.getmUrl_s())
.into(imageView);
} catch(NullPointerException e) {
/* sets image to default image
*/
imageView.setImageResource(R.drawable.default_img);
}
TextView image_id = (TextView) listItemView.findViewById(R.id.flickr_id);
image_id.setText(currentWord.getmId());
return listItemView;
}
}
我不知道在下面的代码中该怎么做:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Search Images");
toolbar.setTitleTextColor(Color.parseColor("#ffffff"));
searchView = (MaterialSearchView) findViewById(R.id.search_view);
searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
}
@Override
public void onSearchViewClosed() {
techListView.setAdapter(mAdapter);
SearchActivity.SearchAsyncTask task = new SearchActivity.SearchAsyncTask();
task.execute(USGS_REQUEST_URL);
}
});
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
}
});
解决方案
您需要做两件事。首先在您的适配器中实现 Filterable,您需要在其中实现过滤数据的逻辑。其次,您需要在 onQueryTextChange() 中调用 adapter.getFilter() 来触发过滤器。请检查此链接。
https://www.androidhive.info/2017/11/android-recyclerview-with-search-filter-functionality/
推荐阅读
- ocr - 使用 tesseract OCR 检测垂直文本(容器 BIC 代码)失败
- python - 在 Python 中使用误差线绘图
- python - 向 if 语句添加条件
- apache-spark - Apache Beam Combine vs GroupByKey
- jquery-validate - jquery验证文件输入不起作用
- c# - ASP.NET Core 3.1、i18n - 用户内容的本地化
- sequelize.js - 如何在 Sequelize 上写左连接?
- excel - 从范围内的单元格复制值并将它们粘贴到范围内的随机单元格中
- angular - 如何使用 rxjs 和 Angular 9 控制服务调用的流程?
- clojure - 在clojure / core.logic中最小化/最大化可能?