android - Firebase 读取 getter 设置器
问题描述
我试图从我的 Firebase 实时数据库中获取一些数据,一般如下,但无法弄清楚问题在代码中的哪个位置困扰着我。以下 Toast 语句仅返回名称,但不打印 bmdc!
我无法弄清楚问题出在哪里。代码在这里:
package com.example.abed.smit;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import org.w3c.dom.Text;
public class FindDocActivity extends AppCompatActivity {
private ImageView SearchButton_doc;
private EditText SearchInput_doc;
private RecyclerView SearchResult_doc;
private DatabaseReference allDocdatabaseref;
FirebaseRecyclerAdapter<FindDoctors, FindDoctorsViewHolder> firebaseRecyclerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_doc);
SearchResult_doc = (RecyclerView) findViewById(R.id.search_result_list1);
SearchResult_doc.setHasFixedSize(true);
SearchResult_doc.setLayoutManager(new LinearLayoutManager(this));
SearchButton_doc = (ImageView) findViewById(R.id.search_people_btn1);
SearchInput_doc = (EditText) findViewById(R.id.Search_box_input1);
allDocdatabaseref = FirebaseDatabase.getInstance().getReference().child("BMDC");
SearchButton_doc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String searchBoxInput1 = SearchInput_doc.getText().toString().trim();
SearchDoc(searchBoxInput1);
}
});
}
private void SearchDoc(String searchBoxInput1) {
Toast.makeText(this, "searching..", Toast.LENGTH_LONG).show();
Query searchdoctorquery = allDocdatabaseref.orderByChild("name").startAt(searchBoxInput1).endAt(searchBoxInput1 + "\uf8ff");
firebaseRecyclerAdapter
= new FirebaseRecyclerAdapter<FindDoctors, FindDoctorsViewHolder>(
FindDoctors.class,
R.layout.all_userdoc_display_layout,
FindDoctorsViewHolder.class,
searchdoctorquery
) {
@Override
protected void populateViewHolder(FindDoctorsViewHolder viewHolder, FindDoctors model, int position) {
/// Toast.makeText(getApplicationContext(),model.getName().toString(), Toast.LENGTH_LONG).show();
viewHolder.setbmdc(model.getbmdc());
viewHolder.setName(model.getName());
}
};
SearchResult_doc.setAdapter(firebaseRecyclerAdapter);
firebaseRecyclerAdapter.startListening();
}
public static class FindDoctorsViewHolder extends RecyclerView.ViewHolder {
View mView;
public FindDoctorsViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setbmdc(String bmdc) {
TextView Docbmdc = mView.findViewById(R.id.all_user_profile_name1);
Docbmdc.setText(bmdc);
}
public void setName(String name) {
TextView Docname = mView.findViewById(R.id.all_user_profile_status1);
Docname.setText(name);
}
}
}
我使用了getter setter:
package com.example.abed.smit;
public class FindDoctors {
public String bmdc , name;
public FindDoctors()
{
}
public FindDoctors(String bmdc, String name) {
this.bmdc =bmdc;
this.name = name;
}
public String getbmdc() {
return bmdc;
}
public void setbmdc(String bmdc) {
this.bmdc = bmdc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
结果如下:
解决方案
问题在于bmdc
您的模型类中的字段吸气剂不正确。正确的 getter 应该是getBmdc()
,而不是 getbmdc()
现在在您的代码中。看到大写字母B
和小写字母了b
吗?正确的模型类应如下所示:
public class FindDoctors {
private String bmdc, name;
public FindDoctors() {}
public FindDoctors(String bmdc, String name) {
this.bmdc = bmdc;
this.name = name;
}
public String getBmdc() { return bmdc; }
public String getName() { return name; }
}
setter 不是必需的,始终是可选的,因为如果 JSON 属性没有 setter,Firebase 客户端会将值直接设置到字段上。但是,如果您想使用 setter,则适合您的字段的正确 setter 是:
public void setBmdc(String bmdc) {
this.bmdc = bmdc;
}
推荐阅读
- python - Python 脚本无法在 Ubuntu 20.04 服务器上运行
- sql - 用于创建日期表的 DAX 公式
- dynamics-crm - 使用 Azure 数据工厂的 Dynamics 365 数据迁移
- laravel - 计算入库物料的产品总物料量_materials
- google-sheets - 谷歌表格查询无法转置
- javascript - 加载外部内容(API)并防止布局转换(动态?)
- matrix - 有没有办法在 Power BI 中动态更改 OD 矩阵?
- powershell - 使用其他用户的凭据启动 powershell 脚本不起作用
- android - 无法为 Wear OS 应用导入 com.google.android.wearable.intent.RemoteIntent
- javascript - 无法读取未定义的属性“onClicked”,但我从未要求它在点击时执行任何操作