2010-07-24 3 views
1

У меня есть просмотр списка с несколькими столбцами; такие как имя, дата и т. д. Я хочу иметь возможность щелкнуть заголовок TextView и отсортировать список по этому полю. Когда список загружает работу переменной, и список запрашивается и сортируется по полю _id (нет ничего удивительного, кроме того, что он работает), но когда я нажимаю на заголовок TextView, я получаю силу:Передача заказа

Тема [<] 3> Основные] (Подвесная (исключение SQLiteException))
ViewRoot.handleMessage (сообщение) линия: 1757
ViewRoot .dispatchMessage линия (Обработчик) (Сообщение): 99 Looper.loop) линии (: 123 ActivityThread.main (Строка []): 4595
Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) строка: недоступна [собственный метод]
Method.invoke (Object, Объект ...) строка: 521
ZygoteInit $ MethodAndArgsCaller.run) линия (: 860
ZygoteInit.main String []) линия (: 618 NativeStart.main (String []) линия: нет в наличии [нативный метод]

TextView не дает ошибок при изменении моей переменной orderby.

НАСТРОЙКА ПЕРЕМЕННОЙ:

private View.OnClickListener NameSortbtnListener = new View.OnClickListener(){

public void onClick(View v){ 

      sort = " KEY_JOURNAL_TITLE "; 
      fillData(); 
     } 

    }; 

Populating LIST:

private void fillData() { Cursor notesCursor = mDbHelper.fetchAllJournals(sort); startManagingCursor(notesCursor);

 String[] from = new String[]{journalDbAdapter.KEY_JOURNAL_TITLE, 
       journalDbAdapter.KEY_LOCATION, journalDbAdapter.KEY_JDATE, 

       journalDbAdapter.KEY_STEPS}; 

     int[] to = new int[]{R.id.text1, R.id.text2, R.id.text3, R.id.text4}; 


     SimpleCursorAdapter notes = 
      new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, 

from, to); setListAdapter(notes); }

QUERY (IN DB переходником):

public Cursor fetchAllJournals(String sort) {

 return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, 
       KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE, KEY_LOCATION, 
       KEY_STEPS},null , null, null, null, sort ,null); 
    } 

ответ

0

Я добавил строку заказа и объединил их в инструкции ... Значение сортировки - это «имя», а значение порядка «ASC». оба с кавычками, хранящимися в строке.

0

Навскидку, я не знаю, что ваш вопрос. Однако, когда вы поймаете исключение, вы должны иметь возможность распечатать сообщение в объекте SQLiteException, что должно помочь выявить проблему.

Кроме того, что я предполагаю, что у вас есть константы, определенные где-то, например: String KEY_JROWID = "KEY_JROWID"; Строка KEY_JOURNAL_TITLE = "KEY_JOURNAL_TITLE";

В вашем событии onClick вы задаете свой тип «KEY_JOURNAL_TITLE» вместо KEY_JOURNAL_TITLE. Если имена столбцов не совпадают непосредственно с именами переменных, SQLite может бросать исключение, не найденное в столбце.

Единственная другая возможная проблема, которую я вижу, - это случайное пространство до и после в столбце сортировки. Не знаю, почему у вас это есть ... так что это может быть причиной. И я действительно сомневаюсь, что это вызовет проблему, но, просто выстрел в темноте.

+0

в базе данных адаптер да есть константы для каждого поля. Я играл с интервалом по той же ошибке. также: я, возможно, не указал, что я объявил сортировку перед вызовом запроса и без ошибок. private String sort = "null"; – Brian

+0

Как насчет сообщения о SQLiteException? Что, если вы замените sort = "KEY_JOURNAL_TITLE" на sort = KEY_JOURNAL_TITLE? – aepryus

+0

Я не могу проверить его прямо сейчас, но я не верю, что вы можете установить строку без кавычек. – Brian

Смежные вопросы