поэтому я получил здесь блок кода, который получает все мои объекты из Firebase / Firestore и устанавливает их в моем RecyclerView:
public void getFromDatabase(String sortBy, String collectionPath, int minPrice, int maxPrice) {
Query query = db.collection(collectionPath).orderBy(sortBy, Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Gpu> options = new FirestoreRecyclerOptions.Builder<Gpu>()
.setQuery(query, Gpu.class)
.build();
adapter = new FirestoreRecyclerAdapter<Gpu, GpuHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull GpuHolder holder, int position, @NonNull Gpu gpu) {
holder.textViewModel.setText(gpu.getModel());
holder.textViewPrice.setText(String.valueOf(gpu.getPrice()));
holder.textViewBench.setText(String.valueOf(gpu.getBench()));
holder.textViewValue.setText(String.valueOf(gpu.getValue()));
holder.textViewType.setText(String.valueOf(gpu.getType()));
}
@NonNull
@Override
public GpuHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.gpulist_layout, parent, false);
return new GpuHolder(view);
}
};
adapter.notifyDataSetChanged();
adapter.startListening();
gpuRecycler.setAdapter(adapter);
}
Как вы можете сказать, minPrice
и maxPrice
делаетпока ничего, в основном, я хотел сделать что-то вроде "если цена объекта выше, чем minPrice и ниже, чем maxPrice, поместите его в RecyclerView, в противном случае, вернитесь и повторите".
Кстати, этоКак приложение в данный момент выглядит, здесь работают фильтры / сортировка:
Пока я зацикливаюсь только на фильтрации по ценемы пытались поместить оператор if следующим образом (minPrice установлен на 70, а max на 600):
@Override
protected void onBindViewHolder(@NonNull GpuHolder holder, int position, @NonNull Gpu gpu) {
if (gpu.getPrice() > minPrice && gpu.getPrice() < maxPrice) {
holder.textViewModel.setText(gpu.getModel());
holder.textViewPrice.setText(String.valueOf(gpu.getPrice()));
holder.textViewBench.setText(String.valueOf(gpu.getBench()));
holder.textViewValue.setText(String.valueOf(gpu.getValue()));
holder.textViewType.setText(String.valueOf(gpu.getType()));
}
}
Но я не могу сделать else {continue;}
, так как это не цикл for.Так что он делает странные вещи, как это:
по какой-то причине, когда я прокручиваю вниз и вверх, эти объекты "TextView" исчезают, и мой "сортировка по убыванию / возрастанию "больше не работает.
если это может помочь, вот как я делаю спуск / подъем, я просто переворачиваю / разворачиваю раскладку: LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, true);
так что да, у кого-нибудь есть идеи, как это сделать?если есть какая-то информация, которую я должен предоставить, пожалуйста, скажите мне!