Android java.lang.NullPointerException:尝试调用虚拟方法';java.util.ArrayList com.example.priyanka.rent_ol.Firebase.Firebase_helper.retrieve()
我是android编程新手,我正在将firebase数据库中的数据检索到recyclerview中,但我得到了空指针异常。确切错误如下Android java.lang.NullPointerException:尝试调用虚拟方法';java.util.ArrayList com.example.priyanka.rent_ol.Firebase.Firebase_helper.retrieve(),android,firebase,arraylist,nullpointerexception,Android,Firebase,Arraylist,Nullpointerexception,我是android编程新手,我正在将firebase数据库中的数据检索到recyclerview中,但我得到了空指针异常。确切错误如下 E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.example.priyanka.rent_ol.Firebase.Firebase_helper.retrieve(java.lang.St
E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.example.priyanka.rent_ol.Firebase.Firebase_helper.retrieve(java.lang.String)' on a null object reference
at com.example.priyanka.rent_ol.Get.getData(Get.java:39)
at com.example.priyanka.rent_ol.AllProducts.onClick(AllProducts.java:43)
at android.view.View.performClick(View.java:4757)
at android.view.View$PerformClick.run(View.java:19757)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5235)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
allproducts类中的Onclick方法如下
public void getData(String category) {
//SETUP RV
// rv= (RecyclerView) findViewById(R.id.recyclerv);
// rv.setLayoutManager(new LinearLayoutManager(this));
catS=category;
adapter = new MyAdapter(this, helper.retrieve(catS));
rv.setAdapter(adapter);
}
DatabaseReference AdvertisementRef;
ArrayList<SaveAddInformation>adinfolist=new ArrayList();
MyAdapter adapter;
public Firebase_helper(DatabaseReference advertisementRef) {
AdvertisementRef = advertisementRef;
}
//READ DATA
public ArrayList<SaveAddInformation> retrieve(String cat){
String categoryS;
categoryS=cat;
AdvertisementRef.orderByChild("main_category").equalTo(categoryS).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {
SaveAddInformation mModel = eventSnapshot.getValue(SaveAddInformation.class);
Log.d("DATA" ,""+ mModel);
adinfolist.add(mModel);
}
// adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return adinfolist;
}
@凌驾
公共void onClick(视图){
获取数据的方法如下
public void getData(String category) {
//SETUP RV
// rv= (RecyclerView) findViewById(R.id.recyclerv);
// rv.setLayoutManager(new LinearLayoutManager(this));
catS=category;
adapter = new MyAdapter(this, helper.retrieve(catS));
rv.setAdapter(adapter);
}
DatabaseReference AdvertisementRef;
ArrayList<SaveAddInformation>adinfolist=new ArrayList();
MyAdapter adapter;
public Firebase_helper(DatabaseReference advertisementRef) {
AdvertisementRef = advertisementRef;
}
//READ DATA
public ArrayList<SaveAddInformation> retrieve(String cat){
String categoryS;
categoryS=cat;
AdvertisementRef.orderByChild("main_category").equalTo(categoryS).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {
SaveAddInformation mModel = eventSnapshot.getValue(SaveAddInformation.class);
Log.d("DATA" ,""+ mModel);
adinfolist.add(mModel);
}
// adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return adinfolist;
}
我的Firebase助手类如下所示
public void getData(String category) {
//SETUP RV
// rv= (RecyclerView) findViewById(R.id.recyclerv);
// rv.setLayoutManager(new LinearLayoutManager(this));
catS=category;
adapter = new MyAdapter(this, helper.retrieve(catS));
rv.setAdapter(adapter);
}
DatabaseReference AdvertisementRef;
ArrayList<SaveAddInformation>adinfolist=new ArrayList();
MyAdapter adapter;
public Firebase_helper(DatabaseReference advertisementRef) {
AdvertisementRef = advertisementRef;
}
//READ DATA
public ArrayList<SaveAddInformation> retrieve(String cat){
String categoryS;
categoryS=cat;
AdvertisementRef.orderByChild("main_category").equalTo(categoryS).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {
SaveAddInformation mModel = eventSnapshot.getValue(SaveAddInformation.class);
Log.d("DATA" ,""+ mModel);
adinfolist.add(mModel);
}
// adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return adinfolist;
}
数据库参考AdvertisementRef;
ArrayListInFolist=新的ArrayList();
MyAdapter适配器;
公共Firebase_助手(数据库参考advertisementRef){
AdvertisementRef=AdvertisementRef;
}
//读取数据
公共ArrayList检索(字符串cat){
字符串类别;
类别=猫;
AdvertisementRef.orderByChild(“主类别”).equalTo(类别).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot eventSnapshot:DataSnapshot.getChildren()){
SaveAddInformation mModel=eventSnapshot.getValue(SaveAddInformation.class);
Log.d(“数据”,“mModel”);
adinfolist.add(mModel);
}
//adapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
复印机;
}
可能重复的变量是否设置了变量的value@zihadrizkyef我也设置了值。请查找已编辑的代码。您可以尝试查看这一点。我看不出您设置了helper
的值。如果系统说引用为null,则该值为null。可能您设置helper的代码未被调用或位于错误的位置。可能重复您是否设置了变量的value@zihadrizkyef我也设置了值。请查找已编辑的代码。您可以尝试查看这一点。我看不出您设置了helper
的值。如果系统说引用为null,则该值为null。可能您设置helper的代码未被调用或正在运行错地方了。