Android: выполните арифметику возвращаемых значений SQL в курсоре перед отображением - PullRequest
2 голосов
/ 15 марта 2011

Я сохраняю длительность звонка (в секундах) в базе данных SQLite, и мне нужно отобразить это как минуты для пользователя.вот утверждение:

Cursor listCur = mDb.rawQuery(
    "SELECT * FROM " + mDbCallTable.TABLE_NAME + 
    " JOIN " + mDbPhoneTable.TABLE_NAME + 
    " ON " + mDbCallTable.TABLE_NAME+"."+mDbCallTable.COLUMN_PHONE+"="+mDbPhoneTable.TABLE_NAME+"."+mDbPhoneTable.COLUMN_PHONE +
    " JOIN " + mDbCustomerTable.TABLE_NAME + 
    " ON " + mDbPhoneTable.TABLE_NAME+"."+mDbPhoneTable.COLUMN_CUST_ID+"="+mDbCustomerTable.TABLE_NAME+"."+mDbCustomerTable._ID,
    null
);

и вот где я подключаю его к SimpleCursorAdapter для отображения:

ListView theList;
SimpleCursorAdapter adapter;
theList = (ListView)findViewById(R.id.call_list);
listCur.moveToFirst();
adapter = new SimpleCursorAdapter(
    MainActivity.this,
    R.layout.call_list_item,
    listCur,
    new String[] {
        mDbCallTable.TABLE_NAME+"."+mDbCallTable.COLUMN_PHONE, 
        mDbCustomerTable.TABLE_NAME+"."+mDbCustomerTable.COLUMN_NAME,
        mDbCallTable.TABLE_NAME+"."+mDbCallTable.COLUMN_DURATION 
    },
    new int[] {
        R.id.item_text_phone,
        R.id.item_text_customer,
        R.id.item_text_duration
    }
);
theList.setAdapter(adapter);

где-то здесь мне нужно разделить на 60, чтобы получить минутыдобавить 1 (округление до ближайшей минуты).как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 15 марта 2011

Вы можете использовать ViewBinder на адаптере.

Что-то вроде

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        if(columnIndex != 2) return false; // only care about 3rd column
        int duration = cursor.getInt(columnIndex) / 60 + 1;
        ((TextView)view).setText(String.valueOf(duration));
        return true;
    }
});
1 голос
/ 15 марта 2011

В операторе выбора - вместо выполнения выбора * - укажите столбцы - и вы можете сделать что-то вроде: выберите column_phone, column_name, (column_duration / 60) + 1 в качестве column_duration от бла-бла

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