当前位置: 首页 > 知识库问答 >
问题:

Listview显示排序后的数据,而不是数据在数据库中的存储方式

景建业
2023-03-14

我正在根据下面显示的代码从数据库填充ListView,代码片段实现了CursorLoader。早些时候,出于同样的目的,我使用SimpleCrsorAdapter,但出于某些原因,我不得不改为ArrayAdapter。

数据库只有两列:

_id(整数主键自动增量)和消息(字符串非空)

ListView工作正常,但问题是listview中显示的字符串会自动按字母顺序排序,而不是按存储顺序排序。而我在使用SimpleCursorAdapter时没有遇到这个问题。

谁能告诉我这次做错了什么以及如何纠正它。

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    String[] projection = {KEY_ROWID, KEY_MESSAGE};
    CursorLoader cursorLoader = new CursorLoader(getActivity(),
            CONTENT_URI, projection, null, null, null);
    return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

    if(cursor != null){
        msgList = new ArrayList<String>();
        cursor.moveToFirst();
        while(cursor.isAfterLast() == false){
            msgList.add(cursor.getString(1).toString());
            cursor.moveToNext();
        }
    } 

    mAdapter = new ArrayAdapter<String>(getActivity(), R.layout.msg_list, R.id.list_textView, msgList);
    listview.setAdapter(mAdapter);
}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    if (mAdapter != null)
        listview.setAdapter(null);
}

谢谢

共有1个答案

晁砚
2023-03-14

数据库中的数据总是以不可预测的顺序获取
您必须指定要对数据进行排序的列以及每列的顺序方向(默认值:ASC)。

尝试使用CursorLoader(…,KEY\u ROWID“DESC”)

 类似资料:
  • 这是我的数据库代码,我想从我的数据库中检索名称,并将其显示在listview中,在下面发布的另一个java文件中显示为profilelist.jar。但是我不能这样做,请告诉我这段代码是否正确? profileList.java 我在a.vaccination.datahandler.getTitle(datahandler.java:115)和a.vaccination.profilelist.

  • 我怀疑原因可能是在ViewHolder中连接字符串,根据我所读到的(检查底部的引用),这应该使用带有占位符的资源字符串来完成,例如 应替换为 其中包括。 https://developer.android.com/guide/topics/resources/string-resource#formattingandstyling https://developer.android.com/ref

  • 问题内容: 我正在使用jdbc编写程序,该程序将成为数据库的接口(类似于CRUD应用程序)。我假设我必须编写一个类(例如),该类将对数据库执行所有操作(以及可能会简化为这些操作的某些其他逻辑)。用户界面由一组表和一些按钮组成。要使用Jtable,我需要实现一个类(例如),它是AbstractTableModel的子类。因此,此类将向用户显示我的数据。我需要为数据库架构中的所有表实现这种模型。我不想

  • 好的,所以我让它运行,显示用户ID,但不得分。然后我开始做一些改变,忘记了我改变了什么,现在我又回到了null null。我觉得我可能删掉了什么或者拼错了什么。 下面是我的模型: 数据库:链接到我的数据库屏幕截图

  • 下面是FXML代码- 我尝试与数据库连接,并尝试将数据从数据库显示到TableView。我尝试将这些东西实现到控制器类中,如下所示- 问题是,它显示行错误。我不知道这个错误的原因。如果我将一行编辑为,则不会显示行的任何错误。然后应用程序运行良好。但是,当我单击Show TableWiew按钮时,它不会将数据显示到TableView中,而是将数据显示到控制台中。 我应该忽略这些错误吗?我如何解决我的

  • 我创建了一个TextView,它以多行显示值 ,我希望将该值保留在SQLite数据库中。这是我使用的代码: 问题是当我保存值时,整个值被插入到一个单元格中。我希望每行的值分开,然后插入到每行的单个单元格中,尽管我使用扫描器方法插入数据,但它不起作用。那有什么办法吗?