如何按项目值对列表视图中的项目进行排序?

时间:2019-10-27 06:39:38

标签: java android sorting listview

我有一个ListView,我想按项目的特定数据库值对项目进行排序。该值也将出现在项目中。这不会是一次性排序。我的意思是,每次创建活动时,它将进行排序。我正在使用适配器。

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

有办法吗?预先非常感谢。

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

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

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

<TextView
    android:id="@+id/lobby_key_textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text=""
    android:textColor="@android:color/transparent"
    android:textSize="8sp"/>

1 个答案:

答案 0 :(得分:0)

您正在寻找类似这样的东西吗?请注意,它具有利用Collections类和setAdapter()方法的升序或降序排序的选项。

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));
}

如果Collections类和ArrayList不起作用,并且如果您引用的是类似FirebaseListAdapter的适配器,则尝试使用{{1} }升序排序的方法:

orderByChild()