0

以下は、アプリケーション名(KEY_NAME)、application_category(KEY_CATEGORY)、およびapplication_permissions(KEY_PERM)の詳細を取得するために試しているコードです。

しかし、本当に必要なのは、アプリケーション名とカテゴリを使用して、アクセス許可の数(カウント)を表示することです。リストビューに表示するにはどうすればよいですか。

ハンドラ

public Cursor queueAll() {
        String[] columns = new String[] { KEY_ID, KEY_NAME, KEY_CATEGORY,
                "count" + KEY_PERM };
        Cursor cursor = sqlitedb.query(MYDATABASE_TABLE, columns, null, null,
                KEY_NAME, null, null);
        return cursor;
    }

主な活動

mySQLiteAdapter = new Handle(this);
        mySQLiteAdapter.openToWrite();
        cursor = mySQLiteAdapter.queueAll();
        String[] from = new String[] { Handle.KEY_NAME, Handle.KEY_PERM,
                Handle.KEY_CATEGORY };
        int[] to = new int[] { R.id.appname, R.id.numbpermcount, R.id.category };
        cursorAdapter = new SimpleCursorAdapter(this,
                R.layout.activity_main_row, cursor, from, to);
        listContent.setAdapter(cursorAdapter);

前もって感謝します。

このままやり直してみました。

ハンドラ

public static final String KEY_ID = "_id";
public static final String KEY_NAME = "application_name";
public static final String KEY_PACK = "application_package";
public static final String KEY_PERM = "application_permission";
public static final String KEY_LEVEL = "application_level";
public static final String KEY_CATEGORY = "application_category";

public Cursor queueAll() {
        String[] columns = new String[] { KEY_ID, KEY_NAME, KEY_CATEGORY,
                "count(" + KEY_PERM +")" };
        Cursor cursor = sqlitedb.query(MYDATABASE_TABLE, columns, null, null,
                KEY_NAME, null, null);
        return cursor;
    }

主な活動

上記と同じです...

エラー

02-19 22:51:04.049: E/AndroidRuntime(1192): java.lang.RuntimeException: Unable to start activity ComponentInfo{db.database/db.database.MainActivity}: java.lang.IllegalArgumentException: column 'application_permission' does not exist
4

1 に答える 1

1

あなたがやろうとしていることは、組み込みのquery方法でできることを少し超えていると思います。代わりに、rawquery任意のSQLを渡すことができるが必要になります。必要なようですね

public static final String KEY_ID = "_id";
public static final String KEY_NAME = "application_name";
public static final String KEY_PACK = "application_package";
public static final String KEY_PERM = "application_permission";
public static final String KEY_LEVEL = "application_level";
public static final String KEY_CATEGORY = "application_category";

public static final String KEY_PERM_COUNT = "application_permission_COUNT";

public Cursor queueAll() {
    Cursor cursor = sqlitedb.rawquery(
        "SELECT "+KEY_ID+", "+KEY_NAME+", "+KEY_CATEGORY
        +", count("+KEY_PERM+") AS "+KEY_PERM_COUNT
        +" FROM "+MYDATABASE_TABLE
        +" GROUP BY "+KEY_ID+", "+KEY_NAME+", "+KEY_CATEGORY
    );
    return cursor;
}

次に、を読み取るようにアダプタを設定しますHandle.KEY_PERM_COUNT

于 2013-02-19T17:47:47.050 に答える