java - 如何按项目值对 ListView 中的项目进行排序?

标签 java android sorting listview

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

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

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

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

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

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

<p></p>

<pre><code><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"/>
</code></pre>

<p></p>

最佳答案

您正在寻找这样的东西吗?请注意,它可以利用 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 之类的适配器,请尝试一些操作像这样,使用 orderByChild() 方法按升序排序:

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

关于java - 如何按项目值对 ListView 中的项目进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577128/

相关文章:

java - 如何正确配置 SimpleMongoRepository?

android - 通过 android 中的共享选项共享 APK

java - 可以根据 Android 操作系统版本只加载特定的代码行吗?

java - 为什么我的冒泡排序方法不起作用?

java - 防止apk卸载后删除文件

java - Jboss 7 Firebird 连接

java.lang.ClassNotFoundException : org. springframework.context.ApplicationContext

android - 如何在 Android 设备上安装 SQLite 可执行文件?

c# - 对 List<string> 进行排序,如 Excel 列排序

c++ - 从一组矩形中创建矩形的连续矩阵