Как я могу показать свои данные в тексте из базы данных firebase в режиме реального времени, когда мой код и мой XML находятся в

#java #android #firebase #firebase-realtime-database

#java #Android #firebase #firebase-realtime-database

Вопрос:

Я создаю этот проект, и я не могу показать свои данные и выполнить поиск серийного номера в firebase, нужна любая помощь, чтобы узнать, в чем проблема. Я пытаюсь и пытаюсь просмотреть все учебные пособия по firebase и не могу найти ответ.

Я сохраняю данные следующим образом в Firebase:

Моя база данных firebase

Это код Java:

 public class Search_For_lost extends AppCompatActivity {

    TextView search_input;
    Button search_btn;
    TextView resu<
    DatabaseReference reff;
    Query query;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search__for_lost);

        search_input=(EditText)findViewById(R.id.search_input);
        result=(TextView) findViewById(R.id.Result_list_view);
        search_btn=(Button)findViewById(R.id.search_button);
        reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
        search_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
                Query query=reff.child("Database").orderByChild("Users").equalTo("serial");
                query.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        if (snapshot.exists()){
                            String username=snapshot.child("name").getValue().toString();
                            String serial=snapshot.child("serial").getValue().toString();
                            Toast.makeText(getApplicationContext(),username  "" serial, Toast.LENGTH_SHORT).show();
                        }
                        else {
                            Toast.makeText(Search_For_lost.this, "Serial is not avaliable", Toast.LENGTH_SHORT).show();
                        }
                    }

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

                    }
                });

 

Это мой файл Xml-макета:

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Search_For_lost">

        <EditText
            android:id="@ id/search_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/input_design"
            android:layout_marginRight="20dp"
            android:layout_marginLeft="20dp"
            android:hint="Search for Serial Number.."
            android:textSize="22sp"
            android:padding="15dp"
            android:layout_marginTop="100dp"
            android:gravity="center" />
            
        <Button
                android:id="@ id/search_button"
                android:layout_width="match_parent"
                android:background="@drawable/buttons"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginRight="25dp"
                android:gravity="center"
                android:text="Search.."
                android:textSize="25sp"
                android:layout_below="@ id/search_input"
                android:layout_marginTop="70dp"/>

        <TextView
            android:id="@ id/Result_list_view"
            android:layout_width="match_parent"
            android:textSize="20dp"
            android:gravity="center"
            android:layout_height="350dp"
            android:layout_below="@ id/search_button"
            android:layout_marginTop="30dp"/>
    
    </RelativeLayout>
 

Я не могу решить эту проблему, и каждый раз, когда я ее запускаю, она недоступна для тостов.

Комментарии:

1. почему вы несколько раз ссылались на «Базу данных» и «Пользователей» в search_btn при методе click

2. Потому что я делаю это для поиска серийного номера… если вы видите какие-либо проблемы, сообщите мне

3. Переполнение стека — заведомо неэффективный интерактивный отладчик. Если вы запустите этот код в отладчике и установите точки останова в каждой строке, какая первая строка не выполняет то, что вы ожидаете от нее?

4. Вы решили проблему? Пожалуйста, ответьте с помощью @AlexMamo

Ответ №1:

У вас ошибка в запросе. Вместо этого

 reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
Query query=reff.child("Database").orderByChild("Users").equalTo("serial");
 

используйте это

 reff= FirebaseDatabase.getInstance().getReference().child("Database").child("Users");
Query query=reff.orderByChild("serial").equalTo("(here put the serial that you are searching about)");
 

Бессмысленно использовать запрос и не знать никаких данных узла

Комментарии:

1. я создаю методы для поиска, создающие строку, и я использую query .orderbychild(«здесь дочерний элемент»).startat().endat()

2. ОК. теперь, когда ваш запрос хорош, получите нужные вам данные. Просто отметьте мой ответ как правильный.