0

so i write a code for searching some range of data in my realtime firebase and when i did that, the data that shown up its not only in range, but all data that i have in firebase is out to my cardview(fragment)

this is my main code that work for searching data

public class SearchListView extends AppCompatActivity {

    private RecyclerView recView;
    MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_search_list_view);

        String tanggalawal = getIntent ( ).getStringExtra ("tanggalawal");
        String tanggalakhir = getIntent ( ).getStringExtra ("tanggalakhir");

        DatabaseReference db = FirebaseDatabase.getInstance().getReference();
        DatabaseReference pendingRef = db.child("Users").child("Pending");

        Query queryByKey = pendingRef.orderByKey()
                .startAt("*" + tanggalawal)
                .endAt("*"+ tanggalakhir + "\uf8ff");


        recView = (RecyclerView)findViewById (R.id.recview);
        recView.setLayoutManager (new LinearLayoutManager (this));

        FirebaseRecyclerOptions<Model> options =
                new FirebaseRecyclerOptions.Builder<Model>()
                        .setQuery(queryByKey, Model.class)
                        .build();

        adapter = new MyAdapter (options);
        recView.setAdapter (adapter);

    }

    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }

}

and my firebase look like this

Firebase Database

and this is my adapter code

public class MyAdapter extends FirebaseRecyclerAdapter <Model,MyAdapter.myViewHolder>{

    public MyAdapter(@NonNull FirebaseRecyclerOptions<Model> options) {
        super (options);
    }

    @Override
    protected void onBindViewHolder(@NonNull myViewHolder myViewHolder, int i, @NonNull Model model) {
        myViewHolder.currentDate.setText (model.getCurrentDate ());
        myViewHolder.fullName.setText (model.getFullName ());
        myViewHolder.currentDateandTime.setText (model.getCurrentDateandTime ());
    }

    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from (parent.getContext ()).inflate (R.layout.item,parent,false);
        return new myViewHolder (view);
    }

    class myViewHolder extends RecyclerView.ViewHolder{
        TextView currentDate, fullName, currentDateandTime;
        public myViewHolder(@NonNull View itemView) {
            super (itemView);
            currentDate = (TextView)itemView.findViewById (R.id.tvTanggalPengajuan);
            fullName = (TextView)itemView.findViewById (R.id.tvNama);
            currentDateandTime = (TextView)itemView.findViewById (R.id.tvNomorkontrak);
        }
    }
    public interface OnNoteListener{

        void OnNoteListener(int position);

    }

}

i've following this method using "*" that look like this, but still failed Search firebase realtime database base on 6 digit in front of the child data, i want to query data between two numbers (dates)

0 Answers0