首页 > 解决方案 > 从 Sqlite 游标加载器中提取数据

问题描述

好的,我有一个具有 Listview 并使用 sqlite 数据填充它的应用程序。但我也希望能够通过电子邮件发送消息正文的每个视图的内容。我尝试使用全局字符串变量执行此操作,并在 BindView 部分的 CarCursorAdapter 活动中捕获数据,如下所示:

   // 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";

然后我在电子邮件意图中使用该字符串。但问题是每次填充列表视图时它都会不断添加到这个字符串中,所以我得到各种双重条目。选择电子邮件功能后,仅捕获一次的最佳方法是什么?或者在某个地方将字符串重置为空?也许只是从每个列表视图项而不是从游标加载器中读取?可能有一种方法可以循环浏览数据库表,但我遇到了各种错误并且没有任何运气。

标签: sqlitelistviewandroid-cursorloader

解决方案


发现这个工作。我的 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;

    }

推荐阅读