2016-08-18 3 views
0

Я пытаюсь следовать вместе со следующим учебником:не может разрешить конструктор для FirebaseListAdapter (Android)

Retrieving data in realtime with Firebase Events - Firecasts #2

Вокруг 14:00-я минуты, вы увидите следующий код введен:

FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this, 
      String.class, android.R.layout.simple_list_item_1, messagesRef) { 

     protected void populateView(View v, String model, int position) { 
      TextView textView = (TextView) findViewById(android.R.id.text1); 
      textView.setText(model); 
     } 
    }; 

Однако моя Android-студия подчеркивает параметры конструктора красным цветом, и когда я наводил указатель мыши на подчеркнутую область, появляется сообщение «Невозможно разрешить конструктор» [подробное описание моего конструктора w/params] ». Хотелось бы, чтобы я мог вырезать и вставить то, что он говорит точно, но я не могу найти способ сделать это.

Во всяком случае ... В моем бесконечном знании я проверил базовый (импортированный) класс FirebaseListAdapter.java (в случае, если были какие-то изменения в требованиях к конструктору с момента создания видео), и я могу видеть нет причин, почему мой конструктор (который на самом деле не является «моим» конструктором - это тот, что есть в видео) не работает.

Спасибо за помощь!

PS - Я знаю, что кто-то собирается попросить больше кода, так вот вся MainActivity:

package com.testing123.firecast2; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import com.firebase.client.ChildEventListener; 
import com.firebase.client.DataSnapshot; 
import com.firebase.client.Firebase; 
import com.firebase.client.FirebaseError; 
import com.firebase.client.ValueEventListener; 
import com.firebase.ui.database.FirebaseListAdapter; 
import java.util.ArrayList; 
import java.util.Map; 

public class MainActivity extends AppCompatActivity { 

ArrayAdapter<String> adapter; 

static final String TAG = "FireBase2"; 

// Firebase 

Firebase mRootRef; 
Firebase messagesRef; 

// ArrayList<String> mMessages = new ArrayList<>(); 

// UI 

TextView mTextView; 
ListView mListView; 

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

    mRootRef = new Firebase ("https://firecast002.firebaseio.com/"); 

    mTextView = (TextView) findViewById(R.id.textView); 
    mListView = (ListView) findViewById(R.id.listView); 

} 


@Override 
protected void onStart() { 
    super.onStart(); 
    messagesRef = mRootRef.child("messages"); 

    // adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mMessages); 
    FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this, 
      String.class, android.R.layout.simple_list_item_1, messagesRef) { 

     protected void populateView(View v, String model, int position) { 
      TextView textView = (TextView) findViewById(android.R.id.text1); 
      textView.setText(model); 
     } 
    }; 



    mListView.setAdapter(adapter); 

    /* messagesRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      // String message = dataSnapshot.getValue(String.class); 

      // mTextView.setText(message); 

      // that was how its done for single key value pair... but now we're doing multiple children under "message" 

      Map<String,String> map = dataSnapshot.getValue(Map.class); 
      String message1 = map.get("message1"); 
      String message2 = map.get("message2"); 

     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
     } 
    }); */ 

    // that was how its done for valuevent listener... now we treat the children of "message" key as list items 
    // and use a childeventlistener instead 

    /* messagesRef.addChildEventListener(new ChildEventListener() { 
     @Override 
     // gets fired for every INITIAL child member. 
     // only gets sent a string, not a downstream dataset 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      String message = dataSnapshot.getValue(String.class); 
      Log.i(TAG, "child added: " + message + " ... and by the way, String 's' is" + s); 
      mMessages.add(message); 
      adapter.notifyDataSetChanged(); 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
      String message = dataSnapshot.getValue(String.class); 
      Log.i(TAG, "child changed: " + message + " ... and by the way, String 's' is" + s); 
     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

      String message = dataSnapshot.getValue(String.class); 
      Log.i(TAG, "child removed: " + message); 
     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
     } 
    }); 
    */ 
    // that was the hard way, now we use FirebaseUI 





} 
} 
+0

Все кажется законным. Я посетил эту ссылку (https://firebaseui.com/docs/android/com/firebase/ui/FirebaseListAdapter.html), чтобы увидеть доступные конструкторы для нее, и кажется, что вы ее получили. Вы пытались найти ошибку, чтобы узнать, есть ли у кого-нибудь ее? – Vucko

+0

Вы добавили firebase ui в свои зависимости. Gradle file compile 'com.firebaseui: firebase-ui: 0: 3.1' –

+0

Вы могли бы поделиться, какие ошибки вы получаете –

ответ

0

Обновите свой проект, чтобы добавить последнюю версию firebase UI

«com.firebaseui: firebase-ui: 0.4.3 '