Передача заказа - PullRequest
       1

Передача заказа

1 голос
/ 25 июля 2010

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

Поток [<3> main] (Приостановлено (исключение SQLiteException))
ViewRoot.handleMessage (Сообщение) строка: 1757
ViewRoot (Обработчик) .dispatchMessage (Сообщение) строка: 99 Looper.loop () строка: 123 Строка ActivityThread.main (String []): 4595
Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) строка: недоступно [собственный метод]
Строка Method.invoke (Object, 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();
        }

    };

СПИСОК НАСЕЛЕНИЯ:

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 (В БД АДАПТЕРЕ):

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

Ответы [ 2 ]

0 голосов
/ 04 сентября 2010

я добавил строку заказа и соединил их в операторе ... значение sort равно "name", а значение order "ASC"оба без кавычек, хранящихся в строке.

public Cursor fetchAllJournals(String sort, String order) {

        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 + " " + order + " " ,null);
    }

0 голосов
/ 25 июля 2010

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

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

В своем событии onClick вы устанавливаете сортировку на "KEY_JOURNAL_TITLE" вместо KEY_JOURNAL_TITLE.Если имена столбцов не совпадают напрямую с именами переменных, SQLite может выдавать исключение для столбца, не найденного.

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

...