0

私が構築しようとしているアプリで髪を引っ張っています。私は数え切れないほど多くの異なること、本、方法、YouTubeチュートリアルを試しました!航空機の写真を表示するシンプルなアプリを作成しています。ユーザーはクリックして学習リストに追加し(リストビューの代わりにトーストを使用して機能していることを確認)、別のボタンをクリックしてこのリストを表示します。

正しい行数を返すアプリがありますが、すべて空白です。私が読んだことから、これは行がnullであることを意味しますが、私は一生の間、何が悪いのか理解できません!私は誰でも助けることができる人の借金で永遠になります:)

ありがとう!これがコードです...

(データベースヘルパー/アダプター)

    package com.atcapp;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseAdapter {

public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "name";
private static final String TAG = "DatabaseAdapter";

private static final String DATABASE_NAME = "LearntListdb";
private static final String DATABASE_TABLE = "AircraftTable";

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table AircraftTable (_id integer primary key         autoincrement, "
        + "name text not null);";

private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DatabaseAdapter(Context ctx) {
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper {

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + "which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS AircraftNames");
        onCreate(db);
    }
}

// ---opens the database---
public DatabaseAdapter open() throws SQLException {
    db = DBHelper.getWritableDatabase();
    return this;
}

// ---closes the database---
public void close() {
    DBHelper.close();
}

// ---insert an aircraft into the database---
public long insertAircraft(String name) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_NAME, name);
    return db.insert(DATABASE_TABLE, null, initialValues);
}

// ---retrieves all the list---
public Cursor getAllAircraft() {

    Cursor c = db.query(DATABASE_TABLE, new String[] {"_id", "name"}, null, null, null, null, null);
    return c;
}

}

(リストアクティビティ)

    package com.atcapp;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.SimpleCursorAdapter;

public class DataView extends ListActivity {

private DatabaseAdapter mDbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.aircraftlist);

    mDbHelper = new DatabaseAdapter(this);

    mDbHelper.open();
    fillData();

}

private void fillData(){
    Cursor c = mDbHelper.getAllAircraft();

    startManagingCursor(c);



    String[] from = new String[] {DatabaseAdapter.KEY_ROWID, DatabaseAdapter.KEY_NAME};
    int[] to = new int[] {android.R.id.list};

    SimpleCursorAdapter myList =
            new SimpleCursorAdapter(this, R.layout.list_row, c, from, to);
    setListAdapter(myList);

}

}

4

1 に答える 1

1

to配列にtextviewIDを指定する必要があります。カーソルからアダプタのビューにデータをマッピングする必要があります。

list_rowレイアウトを確認し、そこからtextviewidを使用します。

于 2012-04-11T20:36:04.360 に答える