Java 是否可以在listview中反转顺序?
当我从firebase实时数据库中获取数据时,它会自动按升序列出,但我试图将我放入arraylist中的值按相反顺序列出,而不是按升序列出 使用listview时,是否可能获得值的相反顺序?Java 是否可以在listview中反转顺序?,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,当我从firebase实时数据库中获取数据时,它会自动按升序列出,但我试图将我放入arraylist中的值按相反顺序列出,而不是按升序列出 使用listview时,是否可能获得值的相反顺序? 目前使用的代码是: Query query = userRef.orderByChild("totalNumberOfSteps"); ValueEventListener valueEventListener = new ValueEventListener() { @Ov
目前使用的代码是:
Query query = userRef.orderByChild("totalNumberOfSteps");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String username = ds.child("username").getValue(String.class);
long totalNumberOfSteps = ds.child("totalNumberOfSteps").getValue(Long.class);
Log.d(TAG , username + " - Steps: " + totalNumberOfSteps);
arrayList.add(new String(username + " - " + "steps: " + totalNumberOfSteps));
arrayAdapter = new ArrayAdapter<>(Leaderboard.this , android.R.layout.simple_list_item_1 , arrayList);
listView.setAdapter(arrayAdapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG , databaseError.getMessage()); //Don't ignore errors!
}
};
query.addListenerForSingleValueEvent(valueEventListener);}}
首选输出:
John Doe II - Steps: 111
John Doe IV - Steps: 88
John Doe I - Steps: 79
John Doe V - Steps: 12
John Doe III - Steps: 0
John Doe VI - Steps: 0
添加
集合时。反转(arrayList)代码>对于代码,输出为:
John Doe II - Steps: 111
John Doe IV - Steps: 88
John Doe III - Steps: 0
John Doe VI - Steps: 0
John Doe V - Steps: 12
John Doe I - Steps: 79
在将ArrayList提供给ArrayAdapter之前,可以通过以下操作反转ArrayList:
Collections.reverse(arrayList);
在您的情况下,在将其反转并将其传递给ArrayAdapter的构造函数之前,请复制arrayList
:
ArrayList<> tmpArr = new ArrayList<>(arrayList);
Collections.reverse(tmpArr);
arrayAdapter = new ArrayAdapter<>(Leaderboard.this , android.R.layout.simple_list_item_1 , tmpArr );
ArrayList tmpArr=新的ArrayList(ArrayList);
收藏。反面(tmpArr);
arrayAdapter=新的arrayAdapter(leadboard.this,android.R.layout.simple\u list\u item\u 1,tmpArr);
否则,每次调用onDataChange()时,arrayList
对象都会反转,其顺序会混淆。添加集合时。反转(arrayList)
对于我的代码,它确实颠倒了顺序,但不是完全颠倒,我将编辑我的问题,让您在反转ArrayList之前查看复制ArrayList时的结果是什么<代码>ArrayList tmpArr=新的ArrayList(ArrayList);收藏。反面(tmpArr)代码>(使用tmpArr作为适配器)在不添加该行的情况下,该行按升序排列,如问题中列出的当前输出所示。确定。使用我之前评论的代码会有什么结果?(对ArrayAdapter使用tmpArr)通过使用tmpArr,我是否应该删除当前正在使用的ArrayAdapter
?现在有点困惑
ArrayList<> tmpArr = new ArrayList<>(arrayList);
Collections.reverse(tmpArr);
arrayAdapter = new ArrayAdapter<>(Leaderboard.this , android.R.layout.simple_list_item_1 , tmpArr );