有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在服务中使用FirebaseListAdapter<String>?

我的应用程序中有一个Service类,我必须在其中使用FirebaseListAdapter<String>

以下是MyService.java文件:

    public class MyService extends Service {

    DatabaseReference firebaseDatabaseRef;
    String followedBy;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        firebaseDatabaseRef = FirebaseDatabase.getInstance().getReferenceFromUrl("https://***-***.firebaseio.com/");

        Toast.makeText(getBaseContext(), "Service started", Toast.LENGTH_SHORT).show();

        FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this,
                String.class, 安卓.R.layout.simple_expandable_list_item_1, firebaseDatabaseRef) {
            @Override
            protected void populateView(View v, String model, int position) {
                followedBy = model.substring(30);
            }
        };
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(getBaseContext(), "Service stopped", Toast.LENGTH_SHORT).show();
    }
}

但它无法编译,因为我遇到了以下错误:

Error:(133, 47) error: no suitable constructor found for FirebaseListAdapter(MyService,Class<String>,int,DatabaseReference)
constructor FirebaseListAdapter.FirebaseListAdapter(Activity,Class<String>,int,Query) is not applicable
(argument mismatch; MyService cannot be converted to Activity)
constructor FirebaseListAdapter.FirebaseListAdapter(Activity,Class<String>,int,DatabaseReference) is not applicable
(argument mismatch; MyService cannot be converted to Activity)

我应该用什么来代替this中的FirebaseListAdapter<String>来成功编译和运行我的代码

请告诉我


共 (2) 个答案

  1. # 1 楼答案

    请提供Firebase初始化和查询参考

    你在片段中使用FirebaseListAdapter吗

    this指活动的上下文。如果在片段内部有FirebaseListAdapter,那么使用getActivity()而不是this

    请检查我使用的以下代码。在本文中,我在Activity中初始化了FirebaseListAdapter

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
    Query qRef = ref.orderByChild("username");
    FirebaseListAdapter<User> firebaseAdapter = new FirebaseListAdapter<User>(this,User.class,R.layout.list_item,qRef) {
                @Override
                protected void populateView(View v, User model, int position) {
                    Log.i("MainAct","Populating View");
                    TextView textView = (TextView) v.findViewById(R.id.list_item_text);
                    textView.setText(model.getUsername());
    
                }
            };
    
  2. # 2 楼答案

    活动是提供用户界面的应用程序组件。Service的文档说明:

    A Service is an application component that can perform long-running operations in the background, and it does not provide a user interface

    FirebaseListAdapter支持显示Firebase数据库中的数据。它用于Activity。它不能用在Service中。没有必要在Service中使用它,因为服务没有用户界面(除了可选的通知)