Мне удалось выполнить код поисковой активности, но я не получаю изображения, которые я ищу, некоторые показывают, что некоторые не
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search__wallpaper);
recyclerView = findViewById(R.id.recycler_search_wallpaper);
recyclerView.setHasFixedSize(true);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(gridLayoutManager);
if(getIntent()!=null){
search_query = getIntent().getStringExtra("search");
loadBackgroundList(search_query);}
}
private void loadBackgroundList(String search_query) {
query = FirebaseDatabase.getInstance().getReference(Common.STR_WALLPAPER)
.orderByChild("imageName").startAt(search_query).endAt(search_query +"\uf8ff");
options = new FirebaseRecyclerOptions.Builder<WallpaperItem>()
.setQuery(query, WallpaperItem.class)
.build();
adapter = new FirebaseRecyclerAdapter<WallpaperItem, ListWallpaperViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final ListWallpaperViewHolder holder, int position, @NonNull final WallpaperItem model) {
link=model.getImageLink();
GlideApp.with(getBaseContext())
.asBitmap()
.fitCenter()
.override(800,800)
.load(model.getImageLink())
.placeholder(R.drawable.ic_hourglass_custom_black_24dp)
.error(R.drawable.ic_error_outline_black_24dp)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.wallpaper);
holder.setItemClickListener((view, position1) -> {
Intent intent = new Intent(Search_Wallpaper.this, ViewWallpaper.class);
Common.select_background = model;
Common.select_background_key = adapter.getRef(position1).getKey();
startActivity(intent);
});
}
@NonNull
@Override
public ListWallpaperViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_wallpaper_item, parent, false);
int hieght = parent.getMeasuredHeight() / 2;
itemView.setMinimumHeight(hieght);
return new ListWallpaperViewHolder(itemView);
}
};
adapter.startListening();
recyclerView.setAdapter(adapter);
}
@Override
protected void onStart() {
super.onStart();
if (adapter != null)
adapter.startListening();
}
@Override
protected void onResume() {
super.onResume();
if (adapter != null)
adapter.startListening();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
if (searchManager != null) {
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
}
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
loadBackgroundList(query);
return false;
}
@Override
public boolean onQueryTextChange(String query) {
loadBackgroundList(query);
return false;
}
});
return true; }
@Override
protected void onStop() {
if (adapter != null)
adapter.stopListening();
super.onStop();
}
, если изображениеимя и описание изображения содержат поисковый запрос, тогда изображение должно отображаться в recyclerview
.
Я вернул код для строки поиска, которая отображает имя изображения, но я получил только несколько из них. Я хочу этот поискимя должно искать в базе данных Firebase и затем отображать изображение.
Сначала следует проверить имя, чем описание, и, наконец, категорию