【问题标题】:How to fetch data from firebase and put inside spinner [duplicate]如何从firebase获取数据并放入微调器[重复]
【发布时间】:2023-03-30 06:05:01
【问题描述】:

我试图从 firebase 获取数据并将其放入微调器中,我只想在微调器下拉列表中显示节点的名称,但节点的整个分支在下拉列表中显示为单个项目. 请帮我解决这个问题 让我给你看看我的 Java 代码

package com.example.presence;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class add_Attendance_Activity extends AppCompatActivity {
    Spinner spinner;
    ArrayList<String> list;
    ArrayAdapter<String> adapter;
    DatabaseReference href;
    ValueEventListener listener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_attendance);
        href= FirebaseDatabase.getInstance().getReference("students");
        spinner=findViewById(R.id.spinner);
        list=new ArrayList<String>();
        adapter=new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,list);
        spinner.setAdapter(adapter);
        list.clear();
        fetchData();
        adapter.notifyDataSetChanged();
    }
    public void fetchData(){
        listener=href.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for(DataSnapshot mydata: snapshot.getChildren()) {
                    list.add(mydata.getValue().toString());
                }
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }
}

Spinner Looks like this

【问题讨论】:

  • 首先我想知道你想在微调器中放入什么字段。你的问题是什么时候获取数据

标签: java android firebase android-studio


【解决方案1】:

使用 POJO 模型而不是纯字符串将数据存储在数组适配器中。

您可以使用 Gson 从您获取数据的存储库中填充您的模型,并在您的 POJO 模型中,覆盖 toString() 方法并返回您希望您的微调器显示的任何内容!

Kotlin 版本:

override fun toString(): String {
    return when (persianName != null) {
      true -> StringBuilder(name)
        .append(" (").append(persianName)
        .append(")").toString()
      else -> name
    }
  }

Java 版本:

@NonNull
  @Override
  public String toString() {
    return name + " " + supervisorname;
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2017-09-27
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多