我正在尝试构建一个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的教程中学到了东西。它可以工作,但是现在我似乎找不到找到一种方法,在搜索之后,用户设法单击名称列表并使用用户单击的数据重定向到另一个活动。希望向你们学习。