当前位置: 首页 > 知识库问答 >
问题:

setText未显示来自Firebase的数据

梅飞宇
2023-03-14
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/frameLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:context=".DashboardFragment">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="wrap_content"
        android:layout_height="628dp"
        android:animateLayoutChanges="false">


        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="100dp"
            android:text="BOOKING ROOM LIST"
            android:textColor="@color/black"
            android:textSize="30sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.497"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/esearch"
            android:layout_width="360dp"
            android:layout_height="50dp"
            android:layout_marginTop="36dp"
            android:background="@drawable/custom_input"
            android:drawableStart="@drawable/ic_baseline_search_24"
            android:drawablePadding="12dp"
            android:hint="Room No"
            android:padding="12dp"
            android:paddingStart="12dp"
            android:paddingLeft="20dp"
            android:textSize="14sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2" />


        <Button
            android:id="@+id/readdataBtn"
            android:layout_width="261dp"
            android:layout_height="59dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="80dp"
            android:backgroundTint="@color/teal_200"
            android:text="SEARCH"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.49"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/esearch" />

        <View
            android:id="@+id/view3"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginTop="20dp"
            android:background="@color/black"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/readdataBtn" />

        <LinearLayout
            android:id="@+id/linearLayout5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="45dp"
            android:orientation="horizontal"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/readdataBtn">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:text="MATRIX NO:"
                android:textColor="@color/black"
                android:textSize="20sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvmatrix"
                android:layout_width="143dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:textColor="@color/black"
                android:text=""
                android:textSize="20sp" />


        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="105dp"
            android:orientation="horizontal"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/readdataBtn">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:text="ROOM NO :"
                android:textColor="@color/black"
                android:textSize="20sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvroom"
                android:layout_width="177dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:text=""
                android:textColor="@color/black"
                android:textSize="20sp" />


        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="34dp"
            android:orientation="horizontal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout5">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:text="DATE : "
                android:textColor="@color/black"
                android:textSize="20sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvdate"
                android:layout_width="164dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:text=""
                android:textColor="@color/black"
                android:textSize="20sp" />


        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="27dp"
            android:orientation="horizontal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout4">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:text="TIME : "
                android:textColor="@color/black"
                android:textSize="20sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvtime"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:text=""
                android:textColor="@color/black"
                android:textSize="20sp" />


        </LinearLayout>


    </androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>
public class DashboardFragment extends Fragment{
    
        FragmentDashboardBinding binding;
        DatabaseReference reference;
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            View view = inflater.inflate(R.layout.fragment_dashboard, container, false);
            binding = FragmentDashboardBinding.inflate(getLayoutInflater());
            FragmentDashboardBinding binding= FragmentDashboardBinding.inflate(inflater);
            binding.readdataBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getContext(),"PLease Enter Room Number",Toast.LENGTH_SHORT);
    
                    String roomnum = binding.esearch.getText().toString();
                    if (!roomnum.isEmpty()){
    
                        readData(roomnum);
                    }else{
    
                        Toast.makeText(getContext(),"PLease Enter Room Number",Toast.LENGTH_SHORT).show();
                    }
    
                }
    
    
    
            });
            return binding.getRoot();
    
        }
    
        private void readData(String roomnum) {
    
            reference = FirebaseDatabase.getInstance().getReference("Booking");
            reference.child(roomnum).get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<DataSnapshot> task) {
    
                    if (task.isSuccessful()){
    
                        if (((task.getResult()).exists())){
    
    
                            DataSnapshot dataSnapshot = task.getResult();
                            String matrixNum = String.valueOf(dataSnapshot.child("Matrix").getValue(Booking.class));
                            String date = String.valueOf(dataSnapshot.child("Date").getValue());
                            String room = String.valueOf(dataSnapshot.child("Room").getValue());
                            String time = String.valueOf(dataSnapshot.child("Time").getValue());
                            binding.tvdate.setText(date);
                            binding.tvmatrix.setText(matrixNum);
                            binding.tvroom.setText(room);
                            binding.tvtime.setText(time);
                            Toast.makeText(getActivity(),"Successfully Load",Toast.LENGTH_SHORT).show();
    
    
                        }else {
    
                            Toast.makeText(getActivity(),"Room Doesn't Exist",Toast.LENGTH_SHORT).show();
    
                        }
    
    
                    }else {
    
                        Toast.makeText(getActivity(),"Something Went Wrong",Toast.LENGTH_SHORT).show();
                    }
    
    
                }
            });
    
        }
    
    }
{
  "Booking" : {
    "123456" : {
      "Date" : "22/4",
      "Matrix" : 124,
      "Room" : 2,
      "Time" : "11.00 am - 12.00 pm"
    },
   
    "BK20" : {
      "Date" : "22/5",
      "Matrix" : 123,
      "Room" : 3,
      "Time" : "12.00 pm - 1.00 pm"
    },
    "BK21" : {
      "Date" : "1/7/21",
      "Matrix" : 201302000,
      "Room" : "BK21",
      "Time" : "1.00 pm - 2.00 pm"
    }
  }
}

共有1个答案

沈良策
2023-03-14

根据您的评论,要只获取“BK20”的内容,请使用以下方法:

private void readData(String bookingNumber) {
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference bookingNumberRef = rootRef.child("Booking").child(bookingNumber);
    bookingNumberRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DataSnapshot> task) {
            if (task.isSuccessful()) {
                DataSnapshot snapshot = task.getResult();
                String date = snapshot.child("Date").getValue(String.class);
                long matrix = snapshot.child("Matrix").getValue(Long.class);
                long room = snapshot.child("Room").getValue(Long.class);
                String time = snapshot.child("Time").getValue(String.class);
                Log.d("TAG", date + ", " + matrix + ", " + room + ", " + time);
            } else {
                Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
            }
        }
    });
}

然后以:

readData("BK20");

logcat中的结果将是:

22/5, 123, 3, 12.00 pm - 1.00 pm
 类似资料:
  • 我正在尝试为一个活动构建一个票务预订应用程序,我设法完成了注册和登录部分。登录后,用户配置文件会显示出来,其中包含一些关于姓名、年龄、电子邮件等的文本视图。我想从实时数据库中读取数据并将其放入文本视图中。我不知道问题出在哪里,但文本视图不会显示数据。 用户配置文件类 用户类

  • 我有代码允许我输入带有纬度和经度的位置名称,然后地图用标记显示位置。 我遇到的问题是,我希望地图显示所有位置,每个位置都有自己的标记。 下面是我用来获取地图上显示的一个位置的代码 非常感谢您的帮助 我没有错误只是显示了一个位置,我已添加到Firebasedatabase

  • 我有一个片段显示来自API的数据,但我不想每次调用该片段时都调用API。所以我从一个不同的类进行api调用,并在片段中调用一个方法来更新UI(textViews),但我得到了textViews的null异常,但那里的数据是100% 如果我尝试硬编码textview.settext(“hello”),它可以工作…

  • 问题内容: 此代码将图片test.gif放入图片位值中。 我的下一个目标是显示以字节为单位保存在数据库中的图片。如何才能做到这一点 ? 问题答案: 就像是: 可能为您工作。

  • Firebase存储图像三分之二天未显示。我有一些发布的应用程序,在这些应用程序里面有一些图片显示从Firebase存储,现在突然它不显示/查看。我还从浏览器>Firebase Console>Storage检查了那些图像,但它没有显示图像预览,并且显示:“错误加载预览”。但我的Firebase Firestore数据显示没有任何错误。我查了储存配额,没有问题。我的火力点计划是“燃烧”,随走随付。

  • 我想在JTable中显示MySQL中的数据,但只显示了表中的最后一行。请帮帮我。我知道我有一个问题,因为jt=newjtable(数据,列)每次都为每行创建一个新表(删除之前的),但我找不到正确的选项。