我正在尝试使用firebase,但当尝试在listView中加载数据时,应用程序返回错误:
java.lang.RuntimeException:无法启动activity ComponentInfo {my activity} java.lang.NullPointerException:尝试对空对象引用调用虚方法'void com.firebase.ui.database.FirebaseListAdapter.startListening ()‘。
如果有人能看到这个问题,那将是非常有帮助的。
我的数据库的方面:
location
40434734
latitude: 40.434734
longitude: -3.70701
txt: "test"
我的班级:
public class start extends AppCompatActivity{
ListView lv;
FirebaseListAdapter adapter;
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
lv = (ListView) findViewById(R.id.listView);
Query query = FirebaseDatabase.getInstance().getReference().child("location");
FirebaseListOptions<LocationData> options = new FirebaseListOptions.Builder<LocationData>()
.setLayout(R.layout.list_location)
.setQuery(query,LocationData.class)
.build();
adapter = new FirebaseListAdapter(options) {
@Override
protected void populateView(View v, Object model, int position) {
TextView stdID = v.findViewById(R.id.nombre);
LocationData ld = (LocationData) model;
stdID.setText(ld.getTxt().toString());
}
};
lv.setAdapter(adapter);
}
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
}
创建对象的LocationData类:
public class LocationData {
double latitude;
double longitude;
String txt;
public LocationData(){
}
public LocationData(double latitude, double longitude, String txt) {
this.latitude = latitude;
this.longitude = longitude;
this.txt = txt;
}
public String getTxt() {
return txt;
}
public void setTxt(String txt) {
this.txt = txt;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
发布于 2018-06-02 04:52:58
而不是这个
adapter.startListening();
&
adapter.stopListening();
你可以这样做-
FirebaseListOptions<LocationData> options = new FirebaseListOptions.Builder<LocationData>()
.setLayout(R.layout.list_location)
.setQuery(query,LocationData.class)
.setLifecycleOwner(this)
.build();
发布于 2018-06-02 07:12:08
在空对象引用上执行
com.firebase.ui.database.FirebaseListAdapter.startListening ()‘。
告诉您没有设置为startListening的适配器,因此
只要改变这一点
FirebaseListAdapter adapter;
到这个
FirebaseListAdapter<LocationData> adapter;
由于您以错误的方式创建适配器,因此这样做将允许您填充它。
正如文档所述,代码的其余部分都是正常的
https://stackoverflow.com/questions/50650685
复制相似问题