Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Firebase实时数据库填充微调器示例_Android_Firebase Realtime Database_Android Spinner - Fatal编程技术网

Android 使用Firebase实时数据库填充微调器示例

Android 使用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

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

我想从学生那里获取所有值,作为字符串列表或任何形式的列表,并使用它填充微调器

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);


}
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()方法中给了我错误