Java 如何按item的值对listview中的项进行排序?

Java 如何按item的值对listview中的项进行排序?,java,android,sorting,listview,Java,Android,Sorting,Listview,我有一个列表视图,我想根据这些项目的特定数据库值对项目进行排序。该值也将位于项目中。这将不是一次性分拣。我的意思是,每次创建活动时,它都会进行排序。我正在为它使用适配器 我已经检查了每一个类似的问题,但我找不到合适的解决方案 有办法吗?事先非常感谢 这是用于排序的值的Firebase数据库引用: mLobbyDatabaseRef = mLobbyDatabase.getReference().child("usersDatabase/" + uid + "/" + "lobbyDatabase

我有一个
列表视图
,我想根据这些项目的特定数据库值对项目进行排序。该值也将位于项目中。这将不是一次性分拣。我的意思是,每次创建活动时,它都会进行排序。我正在为它使用适配器

我已经检查了每一个类似的问题,但我找不到合适的解决方案

有办法吗?事先非常感谢

这是用于排序的值的Firebase数据库引用:

mLobbyDatabaseRef = mLobbyDatabase.getReference().child("usersDatabase/" + uid + "/" + "lobbyDatabase/" + otherUid + "/");
DatabaseReference mLobbyDatabaseKeyRef = mLobbyDatabaseRef.child("lobbyKey");
mLobbyDatabaseKeyRef.setValue(itemKey);

itemKey将是用于排序的值。 也可以从项目中访问它



像这样的东西是你想要的吗?注意,它可以选择按升序或降序排序,利用
集合
类和
setAdapter()
方法

private ListView lv;
Query queryRef = mLobbyDatabaseRef.orderByChild("itemKey");
FirebaseListAdapter<Your_DB_Name> firebaseListAdapter = new FirebaseListAdapter<Your_DB_Name>(this, Your_DB_Name.class, android.R.layout.simple_list_item_1, queryRef) 
{
    @Override
    protected void populateView(View lobby_key_textview, Your_DB_Name model, int position)
    { 
        String itemKey = String.valueOf(model.getItemKey());
        ((TextView)lobby_key_textview.findViewById(android.R.id.text1)).setText(itemKey);
    }
};

lv.setAdapter(firebaseListAdapter);

列表适配器必须按照您希望在listview中显示的顺序提供项目。顺便说一句,你现在真的应该使用RecyclerView而不是ListView。谢谢@Ridcully。它必须提供,但如何提供?我为什么要使用RecylerView?
private ListView lv;
private static ArrayList<String> itemKey = new ArrayList<>();

private void sortData(boolean asc)
{
    if (asc)
       Collections.sort(itemKey);
    else
       Collections.reverse(itemKey);

    lv.setAdapter(new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, itemKey));
}
private ListView lv;
Query queryRef = mLobbyDatabaseRef.orderByChild("itemKey");
FirebaseListAdapter<Your_DB_Name> firebaseListAdapter = new FirebaseListAdapter<Your_DB_Name>(this, Your_DB_Name.class, android.R.layout.simple_list_item_1, queryRef) 
{
    @Override
    protected void populateView(View lobby_key_textview, Your_DB_Name model, int position)
    { 
        String itemKey = String.valueOf(model.getItemKey());
        ((TextView)lobby_key_textview.findViewById(android.R.id.text1)).setText(itemKey);
    }
};

lv.setAdapter(firebaseListAdapter);