Данные для заказа в виде списка - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь получить данные из базы данных Firebase на ListView, но данные не показывают самое новое в верхней части, чем первое, что существует в базе данных.

это из базы данных Firebase

это скриншот из приложения

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

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

        final ArrayAdapter<String> myAdapter= new ArrayAdapter<String>
                (MainActivity.this,android.R.layout.simple_list_item_1,myArray);

        mListView = (ListView)findViewById(R.id.listView);
        mListView.setAdapter(myAdapter);
        mListView.animate();
        mRef= FirebaseDatabase.getInstance().getReference();
        mRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            String value=dataSnapshot.getValue(String.class);
            myArray.add( "- "+ value);
            myAdapter.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                myAdapter.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) {

            }
        });

    }
}

Ответы [ 3 ]

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

попробуйте добавить android: stackFromBottom = "false" в ListView в Xml файле

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

Просто замените эту строку - myArray.add( "- "+ value); на эту строку - myArray.add(0, "- "+ value);. Это сделает ваши предметы добавленными в верхнюю позицию вашего массива.

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

Я подозреваю, myArray - это List, а не фактический массив, как следует из названия. При этом быстрое решение состоит в том, чтобы изменить порядок в этом списке. Вы можете использовать Collections.reverse() для этого.

@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
 String value=dataSnapshot.getValue(String.class);
 int index = Integer.parseInt(dataSnapshot.getKey());
 myArray.add(index,"- "+ value);
 // Reverse the order of that list
 Collections.reverse(myArray);
 myAdapter.notifyDataSetChanged();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...