【问题标题】:example for populating spinner with Firebase realtime database使用 Firebase 实时数据库填充微调器的示例
【发布时间】:2016-10-26 23:54:29
【问题描述】:

我的数据库是这样排列的:

我想从 Student 获取所有值作为字符串列表或任何形式的列表,并使用它来填充 Spinner

Tab2.java

package com.example.shikh.first;

  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.Spinner;
  import android.widget.TextView;

  import com.firebase.ui.FirebaseListAdapter;
  import com.google.firebase.database.DatabaseReference;
  import com.google.firebase.database.FirebaseDatabase;

  import java.util.ArrayList;


  public class practice extends AppCompatActivity {

//    private Spinner Category, SubCategory;
DatabaseReference reference;
Spinner areaSpinner;
ArrayList<String> areas = new ArrayList<String>();

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab2);


    reference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://practice-2f7d1.firebaseio.com");


    areaSpinner = (Spinner) findViewById(R.id.spinner);
    DatabaseReference mref= reference.child("areas");


    FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(this, EventCategories.class, android.R.layout.simple_spinner_item, mref) {


        @Override
        protected void populateView(View view, String s) {
            ((TextView)view.findViewById(R.id.text1)).setText(s.getName());
        }
    };
    areaSpinner.setAdapter(firebaseListAdapter);


}

}

更新代码^

当我用 EventCategories 代替字符串时,代码在 populateView(View view,EventCategories s) 方法中显示错误。

【问题讨论】:

  • 先尝试自己做点什么。如果您遇到问题,我们会为您提供帮助。
  • 请先生看看我的代码

标签: android firebase-realtime-database android-spinner


【解决方案1】:

您可以使用 FirebaseUi 库,该库使用 FirebaseListAdapter。 FirebaseListAdapter 扩展了 BaseAdapter,后者实现了接口 SpinnerAdapter。 所以大部分代码已经写好了……

【讨论】:

  • 我正在这样做,但它在 populateView() 方法中给了我错误
【解决方案2】:

首先你应该创建一个名为“Student”的类

public class Student {
String name;
String courseName;

public Student(String name, String courseName) {
    this.name = name;
    this.courseName = courseName;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getCourseName() {
    return courseName;
}

public void setCourseName(String courseName) {
    this.courseName = courseName;
}
public Map<String, Object> toMap() {
    HashMap<String, Object> result = new HashMap<>();
    result.put("name", name);
    result.put("courseName", courseName);
    return result;
}

}

那么你的数据库应该是这样的

你可以在保存到数据库时使用 push() 和 updateChildren() 方法得到这个数据库结构。您可以查看文档here
现在来到 FirebaseListAdapter

FirebaseListAdapter<Student> firebaseListAdapter = new FirebaseListAdapter<Student>(this, Student.class, android.R.layout.simple_spinner_item, reference) {
    @Override
    protected void populateView(View view, Student s) {
      ((TextView)view.findViewById(R.id.text1)).setText(s.getName());
    }
};

这里是 FirebaseRecyclerAdapter docs

【讨论】:

  • 我想填充微调器
  • 在 populateView() 方法中,如果将学生类的对象作为参数传递,则会给出错误“FirebaseListAdapter 应该实现抽象 populateView() 方法。
  • 请在出现此错误的位置显示您的代码 sn-p。
  • hloooooo 有人在吗?
  • 什么是 EventCategories.class?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 2020-05-28
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
相关资源
最近更新 更多