【问题标题】:How to add Hint in Spinner widget populated with data from FireBase Database?如何在使用 FireBase 数据库中的数据填充的 Spinner 小部件中添加提示?
【发布时间】:2018-08-30 18:56:43
【问题描述】:

我的xml代码是:

<Spinner
    android:id="@+id/destination"
    android:layout_width="344dp"
    android:layout_height="30dp"
    android:autofillHints="Choose destination"
    android:spinnerMode="dropdown" />

我想添加提示(不使用虚拟条目)以便在活动开始时向用户显示。 使用 FireBase 后,内置的 xml 提示功能不起作用。

主要活动:

myRef.child("Stations").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            final List<String> stationname = new ArrayList<String>();

            for (DataSnapshot stationSnapshot : dataSnapshot.getChildren()) {

                 String stationName = stationSnapshot.child("Name").getValue(String.class);
                 stationname.add(stationName);
            }

            Spinner sp2= findViewById(R.id.destination);

            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(FairPage.this, android.R.layout.simple_spinner_item, stationname);
            arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            sp2.setAdapter(arrayAdapter);

【问题讨论】:

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


【解决方案1】:

试试这个

myRef.child("Stations").addListenerForSingleValueEvent(new 
ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final List<String> stationname = new ArrayList<String>();
        stationname.add("Select Station");
        for (DataSnapshot stationSnapshot : dataSnapshot.getChildren()) {

             String stationName = stationSnapshot.child("Name").getValue(String.class);
             stationname.add(stationName);
        }

        Spinner sp2= findViewById(R.id.destination);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(FairPage.this, android.R.layout.simple_spinner_item, stationname);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        sp2.setAdapter(arrayAdapter);

同时检查微调器项目何时被选中

if (stationname.get(postion).equals("Select Station"){
//Toast please  select station 
} 

【讨论】:

  • 成功了,伙计。请编辑您的答案,您拼错了一些关键字。
【解决方案2】:

在从 firebase 设置数据之前,只需在数组列表中添加一项。完成 -

stationname.add("Select Station"); // hint 
myRef.child("Stations").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final List<String> stationname = new ArrayList<String>();

        for (DataSnapshot stationSnapshot : dataSnapshot.getChildren()) {

             String stationName = stationSnapshot.child("Name").getValue(String.class);
             stationname.add(stationName);
        }

        Spinner sp2= findViewById(R.id.destination);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(FairPage.this, android.R.layout.simple_spinner_item, stationname);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        sp2.setAdapter(arrayAdapter);

【讨论】:

  • 必须在初始化 List stationname 后添加虚拟站名
  • stationname.add(" ") 行应该在初始化 stationname 之后。正确的逻辑 bdw。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 2019-09-09
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多