Я пытаюсь следовать вместе со следующим учебником:не может разрешить конструктор для 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
}
}
Все кажется законным. Я посетил эту ссылку (https://firebaseui.com/docs/android/com/firebase/ui/FirebaseListAdapter.html), чтобы увидеть доступные конструкторы для нее, и кажется, что вы ее получили. Вы пытались найти ошибку, чтобы узнать, есть ли у кого-нибудь ее? – Vucko
Вы добавили firebase ui в свои зависимости. Gradle file compile 'com.firebaseui: firebase-ui: 0: 3.1' –
Вы могли бы поделиться, какие ошибки вы получаете –