Извлечение данных из загрузчика курсора Sqlite

ОК, у меня есть приложение, которое имеет представление списка и использует данные sqlite для его заполнения. Но я также хочу иметь возможность отправлять по электронной почте содержимое каждого представления для тела сообщения. Я попытался сделать это с глобальной строковой переменной и перехватить данные в действии CarCursorAdapter в разделе BindView следующим образом:

   // Update the TextViews with the attributes for the current move
       vinTxtView.setText(vinStr);
        dateTxtView.setText(dateStr);
        mvFromTxtView.setText(mvFrom);
        mvToTxtView.setText(mvTo);
        MyProperties.getInstance().bodyStrGlobal =   MyProperties.getInstance().bodyStrGlobal+vinStr+"-"+mvFrom+"->"+mvTo+"-"+dateStr+"\n";

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


person Greg Kraft    schedule 20.05.2020    source источник


Ответы (1)


Нашел это для работы. Моя MainActivity сейчас очень занята, но все работает.

 public String getEmailText(){
        String tempStr = "";
        String[] projection = {
                CarEntry._ID,
                CarEntry.COLUMN_CAR_VIN,
                CarEntry.COLUMN_CAR_DATE,
                CarEntry.COLUMN_CAR_MOVEFROM,
                CarEntry.COLUMN_CAR_MOVETO};

        Cursor  cursor = getContentResolver().query(Uri.parse("content://gregorykraft.com.scanvin/cars"),projection,null,null,null);

        if
        (cursor == null || cursor.getCount() < 1) {
            Toast.makeText(this, getString(R.string.error_uri),
                    Toast.LENGTH_SHORT).show();
            return "";
        }
        int i = 0;
        if (cursor.moveToFirst()) {
            while (!cursor.isAfterLast()) {
                i++;
                String s =String.valueOf(i);
                String vinStr = cursor.getString(cursor.getColumnIndex(CarEntry.COLUMN_CAR_VIN));
                String mvFrom = cursor.getString(cursor.getColumnIndex(CarEntry.COLUMN_CAR_MOVEFROM));
                String mvTo = cursor.getString(cursor.getColumnIndex(CarEntry.COLUMN_CAR_MOVETO));
                String dateStr = cursor.getString(cursor.getColumnIndex(CarEntry.COLUMN_CAR_DATE));
                tempStr = tempStr+s+") "+vinStr + "-" + mvFrom + "->" + mvTo + "-" + dateStr + "\n";
                cursor.moveToNext();
            }
            cursor.close();
        }
        return tempStr;

    }
person Greg Kraft    schedule 21.05.2020