返回String []来自数据库

时间:2014-08-11 19:21:36

标签: android arraylist autocompletetextview arrays

我正在尝试从我的数据库中的一列值填充我的AutoCompleteTextView。

我在我的数据库中运行的查询是:

// GET MEMOS
    public ArrayList<String> autoCompleteMemo(String table)
    {
        SQLiteDatabase db = this.getReadableDatabase();

        ArrayList<String> memoList = new ArrayList<String>();
        String SQL_GET_MEMOS = "SELECT memo FROM " + table;
        Cursor cursor = db.rawQuery(SQL_GET_MEMOS, null);
        cursor.moveToFirst();
        if (!cursor.isAfterLast()) {
            do {
                memoList.add(cursor.getString(0));
            }
            while (cursor.moveToNext());
        }
        cursor.close();
        db.close();
        return memoList;
    }

以下是我尝试设置值的方法:

memoList = new String[db.autoCompleteMemo(table).size()];
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, memoList);
        etMemo.setAdapter(adapter);

出于某种原因,这似乎不起作用。我是否正确地从ArrayList转换为String []?

由于

此外,

如果我做类似的事情

String[] memoList = getResources().getStringArray(R.array.memoList);

并在Strings.xml中填充它可以正常工作。

1 个答案:

答案 0 :(得分:0)

我将我的数据库方法更改为以下内容,现在可以正常工作

public String[] autoCompleteMemo(String table) {
        SQLiteDatabase db = this.getReadableDatabase();
        String SQL_GET_MEMOS = "SELECT memo FROM " + table;
        Cursor cursor = db.rawQuery(SQL_GET_MEMOS, null);

        if (cursor.getCount() > 0) {
            String[] str = new String[cursor.getCount()];
            int i = 0;

            while (cursor.moveToNext()) {
                str[i] = cursor.getString(cursor.getColumnIndex("memo"));
                i++;
            }
            return str;
        }
        else {
            return new String[] {};
        }
    }