【发布时间】:2020-08-19 07:51:43
【问题描述】:
它应该在我搜索时显示数据并过滤,但它没有显示任何数据。我以为我写了一些相当不错的代码,但我找不到我的错误。
我有一个包含职位、公司、经验、年龄、薪酬和类型的模型类。 我制作了一个单独的布局 XML 文件。 Here 是 firebase 实时数据库结构。 here 是模型类。
这里是java代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_showjobs);
ref = FirebaseDatabase.getInstance().getReference("jobs");
searchbtn = findViewById(R.id.searchjobbtn);
searchtxt = findViewById(R.id.searchjobtxt);
result = (RecyclerView) findViewById(R.id.results);
result.setHasFixedSize(true);
result.setLayoutManager(new LinearLayoutManager(this));
searchbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String searchedText = searchtxt.getText().toString();
firebasesearch(searchedText);
}
});
}
private void firebasesearch(String searchtxt) {
Query firebaseSearchQuery=ref.orderByChild("jobTitle").startAt(searchtxt).endAt(searchtxt+"\uf8ff");
FirebaseRecyclerOptions<jobclass> options = new FirebaseRecyclerOptions.Builder<jobclass>().setQuery(firebaseSearchQuery, jobclass.class).build();
FirebaseRecyclerAdapter<jobclass, jobviewholder> recycleradaptor = new FirebaseRecyclerAdapter<jobclass, jobviewholder>(options) {
@Override
protected void onBindViewHolder(@NonNull jobviewholder holder, int position, @NonNull jobclass model) {
holder.setDetails(model.getJobTitle(), model.getCompany(), model.getPay(), model.getType(), model.getExperience(), model.getAge());
}
@NonNull
@Override
public jobviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.listlayout, parent, false);
jobviewholder jv = new jobviewholder(v);
return jv;
}
};
result.setAdapter(recycleradaptor);
Toast.makeText(showjobs.this, "Searching", Toast.LENGTH_LONG).show();
}
/* @Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions<jobclass> options = new FirebaseRecyclerOptions.Builder<jobclass>().setQuery(ref, jobclass.class).build();
Toast.makeText(showjobs.this, "Searching", Toast.LENGTH_LONG).show();
FirebaseRecyclerAdapter<jobclass, jobviewholder> recycleradaptor = new FirebaseRecyclerAdapter<jobclass, jobviewholder>(options) {
@Override
protected void onBindViewHolder(@NonNull jobviewholder holder, int position, @NonNull jobclass model) {
holder.setDetails(model.getJobTitle(), model.getCompany(), model.getPay(), model.getType(), model.getExperience(), model.getAge());
}
@NonNull
@Override
public jobviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.listlayout, parent, false);
jobviewholder jv = new jobviewholder(v);
return jv;
}
};
result.setAdapter(recycleradaptor);
}*/
public class jobviewholder extends RecyclerView.ViewHolder {
View v;
public jobviewholder(View itemView){
super(itemView);
v=itemView;
}
public void setDetails(String jobn, String companyn, String pay, String Ag, String xreq, String jtyp){
TextView jobtitle=findViewById(R.id.jname);
TextView companyname=findViewById(R.id.cname);
TextView payment=findViewById(R.id.sal);
TextView age=findViewById(R.id.agereq);
TextView exprequired=findViewById(R.id.reqex);
TextView jobtype=findViewById(R.id.type);
jobtitle.setText(jobn);
companyname.setText(companyn);
payment.setText(pay);
age.setText(Ag);
exprequired.setText(xreq);
jobtype.setText(jtyp);
}
}
}
感谢您的宝贵时间。希望有人能帮我找出问题。
【问题讨论】:
-
代替 onclicklistner 试试 Onvalueeventlistener
-
请将您的数据库结构添加为 JSON 文件或至少是屏幕截图。请回复@AlexMamo
-
@AlexMamo 在描述中添加了图片。
-
@ABHIRAMAREDDYREDDY 您是否尝试开始监听更改?
-
对不起,我不明白该怎么做
标签: java android firebase firebase-realtime-database android-recyclerview