能够从Android的Firebase数据库中检索数据,但仅限于单个用户 [英] able to retrieve data from Firebase database in android but for single user only

查看:105
本文介绍了能够从Android的Firebase数据库中检索数据,但仅限于单个用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于我能够从Firebase中检索数据,但是只能在android中使用单一用户数据库。
我只是想从数据库中获取数据库中的数据,而且没有用户身份验证登录信息就插入了firebase。



我在logcat中得到错误:

  java.lang.NullPointerException:试图调用虚函数java.lang.String java.lang.Object.toString()'null对象引用

以下是我的代码:

  import android.os.Bundle; 

导入android.support.annotation.Nullable;
导入android.support.v7.app.AppCompatActivity;
导入android.util.Log;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class ViewDatabase extends AppCompatActivity {
private static final String TAG =ViewDatabase;

private DatabaseReference databaseReference;
private String userID;

私人ListView mListView;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.view_database_layout);

mListView =(ListView)findViewById(R.id.listview);
databaseReference = FirebaseDatabase.getInstance()。getReference();


$ b databaseReference.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
showData(dataSnapshot );
}

@Override
public void onCancelled(DatabaseError databaseError){


});


$ private void showData(DataSnapshot dataSnapshot){
userinfo user = dataSnapshot.getValue(userinfo.class);

Log.d(TAG,showData:name:+ user.getName());
Log.d(TAG,showData:Mobile:+ user.getMob());
Log.d(TAG,showData:Vehicle:+ user.getVehicle());
Log.d(TAG,showData:Address:+ user.getaddress());

ArrayList<字符串> array = new ArrayList< > ();
array.add(user.getName());
array.add(user.getMob());
array.add(user.getVehicle());
array.add(user.getaddress());
ArrayAdapter adapter = new $ b $ ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
mListView.setAdapter(adapter);



$ b $ / code $ / pre
$ b

这是我的用户信息代码:

  public class userinfo {

public String name;
public String mob;
public String vehicle;
公共字符串地址;

public userinfo(){

}

public userinfo(String name,String mob,String vehicle,String address){
this.name = name;
this.mob = mob;
this.vehicle =车辆;
this.address = address;
}
public String getName(){
return name;
}
public String getMob(){
return mob;
}
public String getVehicle(){
return vehicle;

public String getaddress(){
return address;




$ div class =h2_lin>解决方案
$ p
$ b pre $ public $ onDataChange(DataSnapshot dataSnapshot){$ b $ (DataSnapshot data:dataSnapshot.getChildren()){
userinfo user = data.getValue(userinfo.class);
Log.d(TAG,User name:+ user.getName()+,mobile:
+ user.getMob()+,Vehicle+ user.getVehicle()+ ,地址+
user.getAdd());}
}


As I am able to retrieve data from Firebase, but for single user only database in android. I just want to get the data from database which I have inserted in firebase without user authentication login.

I am getting error in logcat:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference

Here is my code:

import android.os.Bundle;

import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class ViewDatabase extends AppCompatActivity {
 private static final String TAG = "ViewDatabase";

 private DatabaseReference databaseReference;
 private String userID;

 private ListView mListView;

 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.view_database_layout);

  mListView = (ListView) findViewById(R.id.listview);
  databaseReference = FirebaseDatabase.getInstance().getReference();



  databaseReference.addValueEventListener(new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
    showData(dataSnapshot);
   }

   @Override
   public void onCancelled(DatabaseError databaseError) {

   }
  });

 }

 private void showData(DataSnapshot dataSnapshot) {
  userinfo user = dataSnapshot.getValue(userinfo.class);

  Log.d(TAG, "showData: name: " + user.getName());
  Log.d(TAG, "showData: Mobile: " + user.getMob());
  Log.d(TAG, "showData: Vehicle: " + user.getVehicle());
  Log.d(TAG, "showData: Address: " + user.getaddress());

  ArrayList < String > array = new ArrayList < > ();
  array.add(user.getName());
  array.add(user.getMob());
  array.add(user.getVehicle());
  array.add(user.getaddress());
  ArrayAdapter adapter = new
  ArrayAdapter(this, android.R.layout.simple_list_item_1, array);
  mListView.setAdapter(adapter);
 }


}

Here is my userinfo code:

  public class userinfo {

   public String name;
   public String mob;
   public String vehicle;
   public String address;

   public userinfo() {

   }

   public userinfo(String name, String mob, String vehicle, String address) {
    this.name = name;
    this.mob = mob;
    this.vehicle = vehicle;
    this.address = address;
   }
   public String getName() {
    return name;
   }
   public String getMob() {
    return mob;
   }
   public String getVehicle() {
    return vehicle;
   }
   public String getaddress() {
    return address;
   }
  }
  }

解决方案

Using an iterator you will be able to accomplish this.

 public void onDataChange(DataSnapshot dataSnapshot) {
                  for(DataSnapshot data: dataSnapshot.getChildren()){
                userinfo  user = data.getValue(userinfo.class);
                Log.d(TAG, "User name: " + user.getName() + ", mobile: " 
     + user.getMob() + ", Vehicle " + user.getVehicle() + ", Address " + 
     user.getAdd());}
            }

这篇关于能够从Android的Firebase数据库中检索数据,但仅限于单个用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆