使用RecyclerView和Firebase(OnClick)的搜索栏

时间:2018-12-29 13:54:49

标签: android firebase firebase-realtime-database

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

0 个答案:

没有答案