表达需要而不是ContentValues

时间:2016-01-15 18:24:30

标签: android sqlite

我有这段代码:

private void saveBoard(){
        Card tmp;
        int n = cardBoard.length;
        for(int i = 0; i < n/2; i++) {
            for(int j = 0; j < n/2; j++) {
                tmp = cardBoard[i][j];
                ContentValues values = new ContentValues();
                values.put(Constants.ENTRY_COLUMN_POSITIONX, i);
                values.put(Constants.ENTRY_COLUMN_POSITIONY, j);
                values.put(Constants.ENTRY_COLUMN_VALUE, tmp.getValue());
            }
        }
        Uri uri = context.getContentResolver().insert(BoardContentProvider.CONTENT_URL, values);

        Toast.makeText(context, "New Diary-entry Added", Toast.LENGTH_SHORT).show();
    }

我关注此示例代码:

public void addDiaryEntry(View v) {
        String title = mTitle.getText().toString();
        String content = mContent.getText().toString();

    if(title.isEmpty()) {
        mTitle.setError(getText(R.string.error_empty_title));
    } else if(content.isEmpty()) {
        mContent.setError(getText(R.string.error_empty_content));
    } else {
        ContentValues values = new ContentValues();
        values.put(Constants.ENTRY_COLUMN_TITLE, title);
        values.put(Constants.ENTRY_COLUMN_CONTENT, content);

        Calendar currentDate = Calendar.getInstance(); //Get the current date
        SimpleDateFormat formatter= new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); //format it as per your requirement
        String dateNow = formatter.format(currentDate.getTime());

        values.put(Constants.ENTRY_COLUMN_RECORD_DATE, dateNow);

        Uri uri = getContentResolver().insert(DiaryContentProvider.CONTENT_URL, values);

        Toast.makeText(getBaseContext(), "New Diary-entry Added", Toast.LENGTH_SHORT).show();

        goToShowDiaries();
    }
}

主要区别在于,我的类扩展自GridLayout,示例代码中的类扩展了AppCompatActivity。

问题在于这一行:

Uri uri = context.getContentResolver().insert(BoardContentProvider.CONTENT_URL, values);

它不会将值作为参数,它需要一个表达式。这样做的正确方法是什么?我想在数据库中插入一些内容。

1 个答案:

答案 0 :(得分:0)

它无法达到值变量。你必须把这一行:

ContentValues values = new ContentValues();

在for-loop之外。

像这样:

public void saveBoard(){
            Card tmp;
            int n = cardBoard.length;

            ContentValues values = new ContentValues();

            for(int i = 0; i < n/2; i++) {
                for(int j = 0; j < n/2; j++) {
                    tmp = cardBoard[i][j];
                    values.put(Constants.ENTRY_COLUMN_POSITIONX, i);
                    values.put(Constants.ENTRY_COLUMN_POSITIONY, j);
                    values.put(Constants.ENTRY_COLUMN_VALUE, tmp.getValue());
                }
            }
            Uri uri = context.getContentResolver().insert(BoardContentProvider.CONTENT_URL, values);

            Toast.makeText(context, "New Diary-entry Added", Toast.LENGTH_SHORT).show();
        }