Kotlin, recyclerview адаптер, как отсортировать результаты запроса по DESC - PullRequest
0 голосов
/ 30 ноября 2018

это мой код.Что я делаю не так?Я хотел бы отобразить нисходящие результаты в программе повторного просмотра.

TableInfo.TABLE_COLUMN_MESSAGE = "points"

override fun onBindViewHolder(p0: MojViewHolder, p1: Int) {

    val wynikwynik = p0.view.textViewWynik
    val wynikuser = p0.view.textView_user


    val cursor = db.query(TableInfo.TABLE_NAME, null, BaseColumns._ID + "=?", arrayOf(p0.adapterPosition.plus(1).toString()), null, null, TableInfo.TABLE_COLUMN_MESSAGE +" DESC")



    if (cursor.moveToFirst()){

        wynikwynik.text=cursor.getString(1).toString()
        wynikuser.text=cursor.getString(2).toString()

    }


    cursor.close()

}

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Этот оператор выбирает только 1 строку, потому что, как я понимаю, BaseColumns._ID является первичным ключом таблицы.Таким образом, вы передаете p0.adapterPosition.plus(1).toString() в качестве аргумента инструкции, а метод query() выбирает строку с этим идентификатором.Так что нет сортировки только для 1 строки !Если вы хотите извлечь все строки таблицы, отсортированные по убыванию, вы должны выполнить этот оператор:

val cursor = db.query(TableInfo.TABLE_NAME, null, null, null, null, null, TableInfo.TABLE_COLUMN_MESSAGE + " DESC")

или, что еще лучше, используйте rawQuery():

val cursor = db.rawQuery("SELECT * FROM " + TableInfo.TABLE_NAME + " ORDER BY " + TableInfo.TABLE_COLUMN_MESSAGE + " DESC", null)
0 голосов
/ 01 декабря 2018

упорядоченный порядок сортировки DESC предотвращает любую альтернативную (удаленную или базу данных) сортировку ...

, по крайней мере, если элементы адаптера не реализуют Comparable<T> (для локальной сортировки).

для запроса базы данных onBindViewHolder() просто неправильно.

0 голосов
/ 30 ноября 2018

Прежде всего вы должны отделить представление вашей бизнес-логики, я хочу сказать, что вы не должны делать запрос в БД в recyclerView, лучший способ - передать значение данных в вашем recyclerView, эти данные являются информациейдля вашего списка recyclerView lList, если вы делаете запрос db внутри вашего ViewHolder, вы делаете запрос в каждой строке своего списка, и это является проблемой.

Проверьте эту информацию о работе представления переработчика: https://developer.android.com/guide/topics/ui/layout/recyclerview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...