我在使用recyclerview和search检索Firebase查询的数据时遇到问题,我的代码如下:

时间:2019-03-04 14:18:15

标签: android firebase firebase-realtime-database

search.java

受保护的void onCreate(Bundle savedInstanceState){         super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_search);


    mResultList = (RecyclerView) findViewById(R.id.result_list);
    mResultList.setHasFixedSize(true);
    mResultList.setLayoutManager(new LinearLayoutManager(this));
    artistList = new ArrayList<>();
    adapter = new ArtistsAdapter(this, artistList);
    mResultList.setAdapter(adapter);

    mUserDatabase = FirebaseDatabase.getInstance().getReference("pharmacy");
    mUserDatabase.addListenerForSingleValueEvent(valueEventListener);

    mSearchField=(EditText)findViewById(R.id.Search_field);
    mSearchButton = (ImageButton)findViewById(R.id.imageButton);
    mSearchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String searchText = mSearchField.getText().toString();
            firebaseUserSearch(searchText);

        }
    });

}

private void firebaseUserSearch(String searchText) {

    Toast.makeText(Search.this, "Started search..", Toast.LENGTH_LONG).show();

    Query firebaseSearchQuery = mUserDatabase.orderByChild("").startAt(searchText).endAt(searchText + "\uf8ff");
  //new code
    FirebaseRecyclerOptions<Medicine> options =
            new FirebaseRecyclerOptions.Builder<Medicine>()
                    .setQuery(firebaseSearchQuery, Medicine.class)
                    .setLifecycleOwner(this)
                    .build();
    FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Medicine, UsersViewHolder>(options) {

        @Override
        protected void onBindViewHolder(UsersViewHolder holder, int position, Medicine model) {
            holder.setDetails(model.getMedicineName(), model.getMedicineCategory(), model.getMedicineDate(), model.getMedicineId(), model.getMedicinePrice());

        }

        @Override
        public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_layout, parent, false);

            return new UsersViewHolder(view);
        }
    };

    mResultList.setAdapter(firebaseRecyclerAdapter);
}

ArtistsAdapter.java

公共类ArtistsAdapter扩展了RecyclerView.Adapter {

private Context mCtx;
private List<Medicine> artistList;

// RecyclerView recyclerView;
public ArtistsAdapter(Context mCtx, List<Medicine> artistList) {
    this.mCtx = mCtx;
    this.artistList = artistList;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
    View listItem = layoutInflater.inflate(R.layout.list_layout, parent, false);
    ViewHolder viewHolder = new ViewHolder(listItem);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Medicine medicine = artistList.get(position);
    holder.textViewName.setText(medicine.getMedicineName());
    holder.textViewCategory.setText("Category:" + medicine.getMedicineCategory());
    holder.textViewPrice.setText("Price:" + medicine.getMedicinePrice());
}


@Override
public int getItemCount() {
    return artistList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {

    public TextView textViewName, textViewCategory, textViewPrice, textViewDate, textViewId;
    public RelativeLayout relativeLayout;


    public ViewHolder(View itemView) {
        super(itemView);

        textViewName = (TextView) itemView.findViewById(R.id.textViewName);
        textViewCategory = itemView.findViewById(R.id.textViewCategory);
        textViewPrice = (TextView) itemView.findViewById(R.id.textView);
        relativeLayout = (RelativeLayout) itemView.findViewById(R.id.relativeLayout);
    }
}

}

为什么我没有在结果列表中显示搜索查询的输出(在我的情况下为list_layout)database is as given in picture

0 个答案:

没有答案