【问题标题】:Error "no suitable constructor found for FirebaseListAdapter()" in AndroidAndroid 中的错误“找不到适合 FirebaseListAdapter() 的构造函数”
【发布时间】:2023-03-13 19:35:01
【问题描述】:

我不知道FirebaseArduino.... 但是我写了这段代码,参考了 David East 的视频。 所以我遇到了一个错误,请帮我解决它。

错误是:

错误:(66, 52) 错误: 没有找到适合 FirebaseListAdapter() 的构造函数 构造函数 FirebaseListAdapter.FirebaseListAdapter(Activity,Class,int,Firebase) 不适用 (实际参数列表和形式参数列表的长度不同) 构造函数 FirebaseListAdapter.FirebaseListAdapter(Activity,Class,int,Query) 不适用 (实际参数列表和形式参数列表的长度不同)

这是 MainActivity.java 的代码:

package com.example.devashish.sprout;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Button;
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.FirebaseListAdapter;

import java.util.ArrayList;
import java.util.Map;
import java.util.Objects;

public class MainActivity extends AppCompatActivity {

Firebase mRootRef;
ArrayList<String> mMessages= new ArrayList<>();

TextView mTextView;
ListView mListView;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

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



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

    mRootRef = new Firebase("https://pleaserun.firebaseio.com");
    Firebase messagesRef=mRootRef.child("condition");
    final FirebaseListAdapter<String> adapter= new FirebaseListAdapter<String>() {
        @Override
        protected void populateView(View view, String s, int i) {
            TextView textView=(TextView)view.findViewById(android.R.id.text1);
            textView.setText(s);
            mListView.setAdapter(adapter);
        }
    };



}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

我把你提到的那一行改成了:final FirebaseListAdapter adapter = new FirebaseListAdapter(this,String.class,android.R.layout.simple_list_item_‌​1,messagesRef)

现在报错:Error:(71, 38) error: variable adapter may not have been initialized

【问题讨论】:

  • 请改写您的问题,尚不清楚您要做什么。错误在哪一行?是这条线吗? final FirebaseListAdapter&lt;String&gt; adapter= new FirebaseListAdapter&lt;String&gt;()

标签: android listview firebase firebaseui


【解决方案1】:

您缺少FirebaseListAdapter 所需的构造函数参数。在你的情况下可能是这样的:

final FirebaseListAdapter<String> adapter= new FirebaseListAdapter<String>(
  this,         /* the activity */
  String.class, /* the data type that you're reading from Firebase */
  android.R.layout.two_line_list_item, /* the layout for each item */
  messagesRef   /* the Query/Firebase location to read the data from */
) {
  ...

请注意,documented in the FirebaseUI repo、相关联的FirebaseUI codelab 或来自 Android Studio 的错误消息中的所有内容都相当不错。

【讨论】:

  • 我把你提到的那一行改成了:final FirebaseListAdapter adapter = new FirebaseListAdapter(this,String.class,android.R.layout.simple_list_item_1,messagesRef) 现在给错误:错误:(71、38)错误:变量适配器可能尚未初始化
【解决方案2】:

问题在于firebaseui依赖,使用这个

compile 'com.firebaseui:firebase-ui:0.3.1'

我有同样的问题,一旦我改变了错误就消失了。删除您当前的 firebaselistadapter 代码并重新编写它。祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2016-03-24
    • 2018-01-12
    相关资源
    最近更新 更多