(Android)无法使用同一Firebase项目上的其他应用程序检索Firebase数据

时间:2018-06-16 13:10:32

标签: android firebase firebase-realtime-database

我有2个不同的应用程序,它们使用一个Firebase实时数据库。 第一个将一些数据输入数据库的应用程序和必须启用以读取数据库数据的其他应用程序。

我正在使用listview来检索第二个应用程序上的数据, 但不知何故,数据不会显示,应用程序只能显示一个空白屏幕。 我已经在第一个应用程序(我用来编写数据的应用程序)上测试了代码,它运行正常(它显示了所有数据)。

没有错误,但第二个应用程序的列表视图中仍然没有任何内容。

这是数据库

Database

这是我的代码

private ListView listViewDemografi;
private List<Demografi> demografiList;

DatabaseReference databaseDemografi;

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

    databaseDemografi = FirebaseDatabase.getInstance().getReference("data");
    listViewDemografi = (ListView) findViewById(R.id.listViewDemografi);
    demografiList = new ArrayList<Demografi>();

}
@Override
protected void onStart (){
    super.onStart();
    //attaching value event listener
    databaseDemografi.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //clearing the previous artist list
            demografiList.clear();

            //iterating through all the nodes
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                //getting data
                Demografi demografi = postSnapshot.getValue(Demografi.class);
                //adding data to the list
                demografiList.add(demografi);
            }

            //creating adapter
            DemografiList artistAdapter = new DemografiList(MainActivity.this, demografiList);
            //attaching adapter to the listview
            listViewDemografi.setAdapter(artistAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

Demografi.java

public class Demografi {
    String dataJk;
    String dataUsia;
    String dataEdu;
    String dataJob;
    String dataEmail;

    public Demografi(){

    }

    public Demografi(String dataJk, String dataUsia, String dataEdu, String dataJob, String dataEmail){
        this.dataJk = dataJk;
        this.dataUsia = dataUsia;
        this.dataEdu = dataEdu;
        this.dataJob = dataJob;
        this.dataEmail = dataEmail;
    }

    public String getDataJk() {
        return dataJk;
    }

    public String getDataUsia() {
        return dataUsia;
    }

    public String getDataEdu() {
        return dataEdu;
    }

    public String getDataJob() {
        return dataJob;
    }

    public String getDataEmail() {
        return dataEmail;
    }
}

DemografiList.java

private Activity context;
List<Demografi> demografi;

public DemografiList(Activity context, List<Demografi> demografi) {
    super(context, R.layout.layout_demografi_list, demografi);
    this.context = context;
    this.demografi = demografi;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View listViewItem = inflater.inflate(R.layout.layout_demografi_list, null, true);

    TextView tvJk = (TextView) listViewItem.findViewById(R.id.textViewJk);
    TextView tvUsia = (TextView) listViewItem.findViewById(R.id.textViewUsia);
    TextView tvEmail = (TextView) listViewItem.findViewById(R.id.textViewEmail);
    TextView tvEdu = (TextView) listViewItem.findViewById(R.id.textViewPend);
    TextView tvJob = (TextView) listViewItem.findViewById(R.id.textViewJob);

    Demografi artist = demografi.get(position);

    tvJk.setText(artist.getDataJk());
    tvUsia.setText(artist.getDataUsia());
    tvEmail.setText(artist.getDataEmail());
    tvEdu.setText(artist.getDataEdu());
    tvJob.setText(artist.getDataJob());

    return listViewItem;
}

2 个答案:

答案 0 :(得分:0)

您需要将两个应用程序链接到相同的firebase项目; 工具 - &gt; Firebase-&gt;连接到FireBase,现在将其链接到同一个项目。

答案 1 :(得分:0)

<强>解决

我刚刚创建了一个新项目并将其连接到firebase,它运行良好。 但我仍然不知道第二个应用程序的问题是什么。