1

I am trying to build a firebase application where a user could search for their client and then click on the search result, will redirect to client profile activity with their data were passed on. I am using firebase realtime database. I can't seem to find a way to pass the data to from the search list when I click on the list. Basically, I am having trouble passing the data via OnClick after the search result

Search_lecturer class


public class Search_lecturer extends AppCompatActivity {
EditText search_lecturer;
RecyclerView recyclerView;
DatabaseReference databaseReference;
FirebaseUser firebaseUser;
ArrayList <String> NameList;
Search_Adapter_lecturer search_adapter_lecturer;
String lecturer_name2,lectuer_email;


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

    search_lecturer = findViewById(R.id.search_Lecturer);
    recyclerView = findViewById(R.id.recyclerView_Lect);

    databaseReference = FirebaseDatabase.getInstance().getReference();
    firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));

    NameList = new ArrayList<>();

    search_lecturer.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if(!s.toString().isEmpty()){
                setAdapter(s.toString());
            } else {
                NameList.clear();
                recyclerView.removeAllViews();
            }

        }
    });


}

private void setAdapter(final String searchString) {

    final Intent intent2 = null;
    databaseReference.child("lecturer").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            NameList.clear();
            recyclerView.removeAllViews();
            int counter = 0;

            for (DataSnapshot snapshot: dataSnapshot.getChildren()){
                String uid = snapshot.getKey();
                String Lect_Name = snapshot.child("Name").getValue(String.class);




                if(Lect_Name.contains(searchString)){
                    NameList.add(Lect_Name);
                    counter++;


                }
                if (counter == 10){
                    break;
                }
            }

            search_adapter_lecturer = new Search_Adapter_lecturer(Search_lecturer.this, NameList);
            recyclerView.setAdapter(search_adapter_lecturer);











        }


        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

}

Adapter class





public class Search_Adapter_lecturer extends RecyclerView.Adapter<Search_Adapter_lecturer.SearchViewHolder>  {
Context context;
ArrayList<String> NameList;



class SearchViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
   TextView lect_name, lect_email;


   public SearchViewHolder(@NonNull View itemView) {
       super(itemView);
       itemView.setOnClickListener(this);
       lect_name = itemView.findViewById(R.id.lect_name);
       lect_email = itemView.findViewById(R.id.lecturer_email);
   }

    @Override
    public void onClick(View v) {
       Intent intent = new Intent(context, notification_menu.class);
       context.startActivity(intent);
    }
}



public Search_Adapter_lecturer(Context context, ArrayList<String> nameList) {
    this.context = context;
    this.NameList = nameList;
}


@NonNull
@Override
public Search_Adapter_lecturer.SearchViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
   View view = LayoutInflater.from(context).inflate(R.layout.search_list_items, viewGroup, false);
    return new Search_Adapter_lecturer.SearchViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull SearchViewHolder searchViewHolder, int position) {
   searchViewHolder.lect_name.setText(NameList.get(position));





}





@Override
public int getItemCount() {
    return NameList.size();
}

}

I tried to implement a search function into my application. I learn from a tutorial from youtube. It works but now I can't seem to find a way for which after the search, user manage to click on the name list and redirect to another activity with the data that the user clicks on. Hope to learn from you guys.

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807

0 Answers0