2016-12-11 2 views
0

私のアプリにはServiceクラスがあり、その中にFirebaseListAdapter<String>を使用する必要があります。サービスで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, android.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) 

私はFirebaseListAdapter<String>thisの場所に置くことになっていますどのようなコードをコンパイルして正常に実行するには?

お知らせください。

答えて

0

Firebaseの初期化とQuery refを提供してください。

フラグメント内にFirebaseListAdapterを使用していますか?

は、活性の文脈を指す。フラグメント内にFirebaseListAdapterがある場合は、thisの代わりにgetActivity()を使用してください。

以下のコードを確認してください。ここでは、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()); 

      } 
     }; 
+0

私は 'Service'クラスでこれを使用していますが、私はその質問で明確に言及しています。 –

+0

サービスクラスを投稿できますか? – Yoganand

+0

あなたは編集した質問を見ましたか? –

0

あなたが行うことができるはずのでFirebaseRecyclerAdapterは、初期化するためのコンテキストを必要としないように見えます:

FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(
      String.class, android.R.layout.simple_expandable_list_item_1, firebaseDatabaseRef) { 
    ... 

the codeを参照してください。

+0

同じエラー、@ FrankvanPuffelen:/ –

1

アクティビティは、ユーザーインターフェイスを提供するアプリケーションコンポーネントです。 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で使用する必要はありません。

関連する問題