Панель поиска с использованием RecyclerView с Firebase (OnClick) - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь создать приложение firebase, в котором пользователь мог бы найти своего клиента и затем щелкнуть по результату поиска, перенаправив его на активность профиля клиента с передачей данных.Я использую базу данных Firebase в реальном времени.Я не могу найти способ передать данные из списка поиска, когда я нажимаю на список.В основном, у меня возникают проблемы при передаче данных через OnClick после результатов поиска

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();
}

}

Я пытался внедрить функцию поиска в свойприложение.Я учусь на уроке с YouTube.Это работает, но теперь я не могу найти способ, которым после поиска пользователю удается щелкнуть по списку имен и перенаправить к другому действию с данными, по которым пользователь щелкает.Надеюсь учиться у вас, ребята.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...