Android 使用Firebase实时数据库填充微调器示例
我的数据库是这样安排的: 我想从学生那里获取所有值,作为字符串列表或任何形式的列表,并使用它填充微调器 Tab2.javaAndroid 使用Firebase实时数据库填充微调器示例,android,firebase-realtime-database,android-spinner,Android,Firebase Realtime Database,Android 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
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);
}
package com.example.shikh.first;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Spinner;
导入android.widget.TextView;
导入com.firebase.ui.FirebaseListAdapter;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入java.util.ArrayList;
公共课堂实践拓展了学生的学习活动{
//私有微调器类别,子类别;
数据库参考;
微调器区域微调器;
ArrayList areas=新的ArrayList();
创建时受保护的void(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(“区域”);
FirebaseListAdapter FirebaseListAdapter=新的FirebaseListAdapter(此,EventCategories.class,android.R.layout.simple\u微调器\u项,mref){
@凌驾
受保护的void populateView(视图,字符串s){
((TextView)view.findviewbyd(R.id.text1)).setText(s.getName());
}
};
areaSpinner.setAdapter(firebaseListAdapter);
}
}
更新代码^
当我将EventCategories替换字符串时,代码显示populateView(View视图,EventCategories s)方法中的错误。您可以使用FirebaseUi库,它使用FirebaseListAdapter。 FirebaseListAdapter扩展了BaseAdapter,后者实现了接口SpinnerAdapter。
所以大部分代码都已经编写好了…首先,您应该创建一个名为“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;
}
公共班级学生{
字符串名;
字符串courseName;
公立学生(字符串名称、字符串课程名称){
this.name=名称;
this.courseName=courseName;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getCourseName(){
返回courseName;
}
公共void setCourseName(字符串courseName){
this.courseName=courseName;
}
公共地图toMap(){
HashMap结果=新建HashMap();
结果。输入(“名称”,名称);
结果。输入(“courseName”,courseName);
返回结果;
}
}
那么您的数据库应该如下所示
在保存到数据库时,可以使用push()和updateChildren()方法获得数据库的这种结构。您可以查看文档。现在转到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());
}
};
FirebaseListAdapter FirebaseListAdapter=新的FirebaseListAdapter(此,Student.class,android.R.layout.simple\u微调器\u项,参考){
@凌驾
受保护的void populateView(视图,学生s){
((TextView)view.findviewbyd(R.id.text1)).setText(s.getName());
}
};
这是FirebaseRecyclerAdapter。先尝试自己做点什么。如果您遇到问题,我们会帮助您。先生,请查看我的代码我想填充spinnerin populateView()方法,如果将student类的对象作为参数传递,它将给出错误“FirebaseListAdapter应实现抽象的populateView()方法。请显示发生此错误的代码段。HLOOOO有人在吗?什么是EventCategories.class?我正在执行此操作,但它在populateView()方法中给了我错误