0

データベースからリストビューにデータを入力する方法について、たくさんの投稿を読みました。しかし、私は自分のアプリでそれを行うことはできません!私は何が間違っているのかわかりません。私はプログラミングにとても慣れていないので、理解できないことがたくさんありますが、私は学ぼうとしています:)

アクティビティでこのコードを使用して、問題なくデータベースにアイテムを追加します。

String selectedstone = (String) stonespinner.getSelectedItem();
String weight = etaddweight.getText().toString();

db.addStone(new MyStonesDatabase(selectedstone, weight));

DatabaseHandler.javaに私はこれを持っています:

// Adding new stone
void addStone(MyStonesDatabase stone) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_STONE, stone.getStone());
    values.put(KEY_WEIGHT, stone.getWeight());

    // Inserting Row
    db.insert(TABLE_MYSTONES, null, values);
    db.close(); // Closing database connection
}

これを実行すると、データベースにデータが入力されていることがわかります。

Log.d("Reading: ", "Reading all items..");
List<MyStonesDatabase> items = db.getAllstones();

for (MyStonesDatabase cn : items) {
String log = "Id: " + cn.getID() + ", Stone: "
+ cn.getStone() + ", Weight: " + cn.getWeight();
// Writing Items to log
Log.d("Name: ", log);
}

しかし、データベースを表示するためにリストビューを作成しようとすると、アプリがクラッシュするか、何も表示されません。私のDatabaseHandler.javaには、次のものがあります。

// Getting All items from database
public List<MyStonesDatabase> getAllstones() {
    List<MyStonesDatabase> stoneList = new ArrayList<MyStonesDatabase>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_MYSTONES;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            MyStonesDatabase stone = new MyStonesDatabase();
            stone.setID(Integer.parseInt(cursor.getString(0)));
            stone.setStone(cursor.getString(1));
            stone.setWeight(cursor.getString(2));

            // Adding stone to list
            stoneList.add(stone);
        } while (cursor.moveToNext());
    }

    // return stonelist
    return stone;
}

リストビューを表示するアクティビティに何を入れるべきかわかりません。

public class MyStones extends ListActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


}

}

誰かが私を助けてくれますか、私はheheをあきらめようとしています:)ありがとう!

4

1 に答える 1

0

ここにあなたを助けるかもしれない素晴らしい記事/チュートリアルがあります。listViewへの入力は、アクティビティで何かを行うほど簡単ではありません。listAdapterと他のいくつかのものを作成する必要があります。チュートリアルでは、ハードコードされた値を配列で使用します。それを機能させてから、ハードコードされたデータを削除し、DBから取得したデータを使用してみてください。

これを機能させるのはあなたが思っているより少し難しいですが、それほど複雑ではありません。

お役に立てれば:

http://www.ezzylearning.com/tutorial.aspx?tid=1763429

于 2012-07-09T18:58:45.057 に答える