Open
Description
- Android device: Android Studio
- Android OS version: 4.5
- Firebase/Play Services SDK version: 19.5.1
- FirebaseUI version: 6.3.0
Step 3: Describe the problem:
I want to update the query at run time using the same adapter. I have a number of filters that I want to apply at run time to filter out the data from the real-time database. I have even tried the update option but that didn't work well and nothing happened.
Even the logcat don't show any error or bugs,
here is my code to update the query.
Query to update
Query newQuery = FirebaseDatabase.getInstance().getReference().child("King").orderByChild("Category").equalTo("Gaming");
FirebaseRecyclerOptions<ToolsInfo> newOption = new FirebaseRecyclerOptions.Builder<ToolsInfo>().setQuery(newQuery,ToolsInfo.class).build();
myAdapter.updateOptions(newOption);
recyclerView.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
Adapter Code
package com.example.pjtools;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.media.Image;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.squareup.picasso.Picasso;
public class MyAdapter extends FirebaseRecyclerAdapter<ToolsInfo,MyAdapter.myViewHolder> {
LoadingDialog loadingDialog;
public MyAdapter(@NonNull FirebaseRecyclerOptions<ToolsInfo> options, Activity activity) {
super(options);
loadingDialog = new LoadingDialog(activity);
loadingDialog.startLoading();
}
@Override
protected void onBindViewHolder(@NonNull myViewHolder holder, int position, @NonNull ToolsInfo model) {
holder.name.setText(model.getName());
holder.date.setText("Release Date: " + model.getRelease_date());
holder.version.setText("Version: " + model.getVersion());
holder.category.setText("Category: " + model.getCategory());
Picasso.get().load(model.getImageURL()).fit().into(holder.img);
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(holder.cardView.getContext(),ToolOpenActivity.class);
intent.putExtra("id",model.getId());
holder.cardView.getContext().startActivity(intent);
}
});
}
@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_row,parent,false);
loadingDialog.stopLoading();
return new myViewHolder(view);
}
class myViewHolder extends RecyclerView.ViewHolder{
ImageView img;
TextView name, date, version, category;
CardView cardView;
public myViewHolder(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.row_img);
name = itemView.findViewById(R.id.row_name);
date = itemView.findViewById(R.id.row_release_date);
version = itemView.findViewById(R.id.row_version);
category = itemView.findViewById(R.id.row_category);
cardView = itemView.findViewById(R.id.cardView);
}
}
}