0

一直在用我正在尝试构建的应用程序拉扯我的头发。我尝试了很多不同的东西、书籍、方法、youtube 教程,我已经数不清了!我正在构建一个显示飞机图片的简单应用程序,然后用户单击以将其添加到学习列表中(通过使用 toast 而不是 listview 进行验证),然后单击另一个按钮以查看此列表。

我有应用程序返回正确的行数,但它们都是空白的!从我读过的内容来看,这意味着这些行是空的,但我一生都无法弄清楚出了什么问题!我将永远欠任何可以帮助的人的债:)

谢谢!这是代码...

(数据库助手/适配器)

    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 数组中提供 textview id。您需要将数据从游标映射到适配器中的视图。

查看您的 list_row 布局并从那里使用 textview id。

于 2012-04-11T20:36:04.360 回答