как использовать поисковую активность в представлении firebase-recycler - PullRequest
0 голосов
/ 21 октября 2018

firebase DB

Мне удалось выполнить код поисковой активности, но я не получаю изображения, которые я ищу, некоторые показывают, что некоторые не

@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 и затем отображать изображение.

Сначала следует проверить имя, чем описание, и, наконец, категорию

...