Как получить последние добавленные данные первыми в виде списка из базы данных Firebase в реальном времени в android studio - PullRequest
0 голосов
/ 16 марта 2020

У меня есть представление списка для извлечения данных из базы данных Firebase в реальном времени. Но проблема в том, что я хочу показать последние добавленные данные в верхней части списка ... Это проект типа доски объявлений, поэтому я хочу показать последнее уведомление на странице списка ... не удалось найти некоторые хорошие решения в сети ....

вот коды "mainactivity. java" ....

         package com.example.wrappo;
         import androidx.annotation.NonNull;
         import androidx.annotation.Nullable;
         import androidx.appcompat.app.AppCompatActivity;

         import android.content.Intent;
         import android.os.Bundle;
        import android.os.Handler;
         import android.widget.ArrayAdapter;
         import android.widget.ListView;

          import com.google.firebase.database.ChildEventListener;
        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 java.util.ArrayList;
       import java.util.Timer;
       import java.util.TimerTask;
       public class MainActivity extends AppCompatActivity {

ListView myListView;

ArrayList<String> myArrayList = new ArrayList<>();

DatabaseReference mRef;


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

    final ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<String>(MainActivity.this, 
    android.R.layout.simple_list_item_1, myArrayList);
    myListView = (ListView) findViewById(R.id.listview1);
    myListView.setAdapter(myArrayAdapter);

    mRef = FirebaseDatabase.getInstance().getReference();
    mRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            String value = dataSnapshot.getValue(String.class);
            myArrayList.add(value);
            myArrayAdapter.notifyDataSetChanged();
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            myArrayAdapter.notifyDataSetChanged();
        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

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

        }
        });
        }
      }  

вот код 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=".MainActivity">

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/listview1"/>

</RelativeLayout>

1 Ответ

0 голосов
/ 16 марта 2020

Это уже было рассмотрено довольно много раз. Я рекомендую проверить вопросы по «новейшим сверху» и по вопросам по «обратному» .

Самый быстрый способ начать работу - это просто добавить элементы к началу ArrayList вместо его конца:

myArrayList.add(0, value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...