【问题标题】:Firebase retrieving data ErrorFirebase 检索数据错误
【发布时间】:2017-02-22 11:00:24
【问题描述】:

我正在尝试将数据从 firebase 检索到 listview...但是有一行代码会使应用程序崩溃, mDatabase.addValueEventListener((com.google.firebase.database.ValueEventListener) 监听器);

崩溃报告是android addvalueeventlistener cannot be cast to com.google.firebase.database.ValueEventListener

我不知道如何解决这个问题,请:

包 com.example.moses.mcn;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.firebase.client.DataSnapshot;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Map;

public class Business extends AppCompatActivity {
    private ListView business;

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

    public ArrayList<String> arr;
    public ArrayAdapter adapter;

    @Override
    protected void onStart() {
        super.onStart();

        DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
        arr = new ArrayList<>();

        ValueEventListener listener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                map2list((Map) dataSnapshot.getValue());
                //formats the datasnapshot entries to strings
                adapter.notifyDataSetChanged();
                //makes the ListView realtime
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }


            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
                System.out.println(databaseError.toException());
                // ...
            }
        };
        mDatabase.addValueEventListener((com.google.firebase.database.ValueEventListener) listener);

        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, arr);

        ListView listView = (ListView) findViewById(R.id.business);
        listView.setAdapter(adapter);


    }

    public void map2list(Map<String,Long> map){

        arr.clear();
        for (Map.Entry<String, Long> entry : map.entrySet()) {

            Long key = Long.parseLong(entry.getKey());
            String d = DateFormat.getDateTimeInstance().format(key);
            Long value = entry.getValue();
            arr.add(d + ": " + value);
        }

    }
}

【问题讨论】:

  • 请出示您的 build.gradle。您似乎同时使用了当前的 Firebase 数据库库和旧库 - 它们彼此不兼容。

标签: android firebase android-database


【解决方案1】:

将导入更改为

 import com.google.firebase.database.ValueEventListener

来自

import com.firebase.client.ValueEventListener

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多