2016-12-06 18 views
0

Я пытаюсь использовать FirebaseListAdapter для создания ListView, который содержит названия продуктов, но я получаю эту ошибку:ошибка Конструктор при использовании FirebaseListAdapter

error: no suitable constructor found for 
FirebaseListAdapter(MainActivity,Class<String>,int,Firebase) constructor 
FirebaseListAdapter.FirebaseListAdapter(Activity,Class<String>,int,Query) 
is not applicable 

У меня есть последняя версия сервисов Google Play и Google Repository как показано на скриншоте:

enter image description here

Мой build.gradle (корень) является:

dependencies { 
    classpath 'com.android.tools.build:gradle:2.2.2' 
    classpath 'com.google.gms:google-services:3.0.0' 
} 

и мой build.gradle (приложение) является:

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
    exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:25.0.1' 
    compile 'com.google.firebase:firebase-core:10.0.1' 
    compile 'com.google.firebase:firebase-database:10.0.1' 
    compile 'com.google.firebase:firebase-auth:10.0.1' 
    compile 'com.firebase:firebase-client-android:2.4.0' 
    compile 'com.firebaseui:firebase-ui:0.4.1' 

} 
apply plugin: 'com.google.gms.google-services' 

код, который я использую это:

public class MainActivity extends AppCompatActivity { 
    Firebase firebase; 
    ArrayList<String> arrayList = new ArrayList<>(); 
    ListView listView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Firebase.setAndroidContext(this); 
    firebase = new Firebase(Config.FIREBASE_URL); 
    listView = (ListView) findViewById(R.id.listView); 
    } 

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

    Firebase products = firebase.child("names"); 
    FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this, String.class, String.class, android.R.layout.simple_list_item_1, products) { 
     @Override 
     protected void populateView(View v, String model, int position) { 
     // 
     } 
    }; 
    } 
} 

Я перепробовал все решения, которые я нашел для подобных вопросов, но не повезло. Заранее спасибо!

ответ

0

Вы смешиваете новый SDK:

compile 'com.google.firebase:firebase-core:10.0.1' 
compile 'com.google.firebase:firebase-database:10.0.1' 
compile 'com.google.firebase:firebase-auth:10.0.1' 

С унаследованной SDK:

compile 'com.firebase:firebase-client-android:2.4.0' 
compile 'com.firebaseui:firebase-ui:0.4.1' 

Они не совместимы. Сделать это изменение:

//compile 'com.firebase:firebase-client-android:2.4.0' 
compile 'com.firebaseui:firebase-ui:1.0.1' 

И обзор Firebase Upgrade Guide, чтобы получить понимание изменений кода необходимо.

Если вам не нужны возможности нового SDK, я полагаю, вы можете удалить эти зависимости и запустить с помощью старого SDK. Я не пробовал этого и не знаю, встретите ли вы другие проблемы.

0

Попробуйте этот путь:

FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this, String.class, android.R.layout.simple_list_item_1, products) { 
    @Override 
    protected void populateView(View v, String model) { 
    // 
    } 
}; 

метод FirebaseListAdapter populateView имеет только два параметра и String.class, в два раза.

+0

Спасибо, но это не сработает. Моя ошибка: 'Метод не отменяет метод из своего суперкласса'. Таким образом, необходимы три параметра. –

+0

Вы можете видеть [здесь] (https://firebaseui.com/docs/android/com/firebase/ui/FirebaseListAdapter.html), мне нужно два. – MeLine

+0

FirebaseListAdapter (это, String.class, /*String.class,*/ android.R.layout.simple_list_item_1, продукты). Я думаю, что второй String.class должен быть удален;) – MeLine

 Смежные вопросы

  • Нет связанных вопросов^_^