Spinner没有从Firebase填充

问题描述 投票:0回答:1

使用下面的代码没有错误,但数据没有显示。

任何帮助将非常感谢,因为我是一个初学者,不知道如何解决这个问题。

如果可以提供此解决方案的代码也会很棒。

public class AddReviewActivity extends AppCompatActivity {

    Spinner companyNameSpinner;
    ArrayList<String> companies = new ArrayList<>();
    DatabaseReference databaseReference;

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

        databaseReference = FirebaseDatabase.getInstance().getReference("Company");
        companyNameSpinner = (Spinner) findViewById(R.id.companyNameSpinner);
        DatabaseReference mref = databaseReference.child("name");

        FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(this, String.class, android.R.layout.simple_spinner_item, mref) {
            @Override
            protected void populateView(View v, String model, int position) {
                ((TextView)findViewById(android.R.id.text1)).setText(model);
            }
        };
        companyNameSpinner.setAdapter(firebaseListAdapter);
    }

android firebase firebase-realtime-database spinner firebaseui
1个回答
0
投票

doc,建议建造者

//Please notice Im using databaseReference and Company
//More details further
FirebaseListOptions<Company> options = new FirebaseListOptions.Builder<Company>()
        .setQuery(databaseReference, Company.class)
        .setLifeCycleOwner(this);
        .build();
        //Frank van Puffelen coment is right, you have to start listening some how

你不能

mref = databaseReference.child("name");

并期望获得公司名称的列表,不等于SQL select column

您需要创建代表公司的POJO

public class Company {

    private String name;
    //TODO other attributes
    //TODO getters and seters
    //TODO default constructor
}

现在您可以初始化适配器:

FirebaseListAdapter<Company> adapter = new FirebaseListAdapter<Company>(options) {...

当您尝试使用常规findViewById将数据设置为行时,因为您的适配器是抽象类的内部实现,您将访问Activity父方法。你必须使用视图。

protected void populateView(View v, Company model, int position) {
TextView tv = (TextView) view;
view.setText(model.getName());
}

我不知道这是否应该适用于Spinner ListView

为了进一步增长,你必须学习如何调试,在这种情况下,第一步是在populateView方法中添加一个日志

Log.d("COOL_TAG", model);
© www.soinside.com 2019 - 2024. All rights reserved.