Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从我的数据库填充ListView_Android_Database_Android Listview - Fatal编程技术网

Android 从我的数据库填充ListView

Android 从我的数据库填充ListView,android,database,android-listview,Android,Database,Android Listview,我读过很多关于如何从数据库填充listview的文章。但我就是不能在我的应用程序上这么做!我不知道我做错了什么。我对编程非常陌生,所以有很多东西我不懂,但我正在努力学习:) 我在“活动”中使用此代码将项目添加到数据库中,没有任何问题: String selectedstone = (String) stonespinner.getSelectedItem(); String weight = etaddweight.getText().toString(); db.addStone(new M

我读过很多关于如何从数据库填充listview的文章。但我就是不能在我的应用程序上这么做!我不知道我做错了什么。我对编程非常陌生,所以有很多东西我不懂,但我正在努力学习:)

我在“活动”中使用此代码将项目添加到数据库中,没有任何问题:

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
}
// 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;
}
我可以看到我的数据库通过运行以下命令填充:

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);
}
}

有人能帮帮我吗,我就要放弃了呵呵:)
谢谢

这是一篇很好的文章/教程,可能会对您有所帮助。填充listView并不像在活动中做一些事情那样简单。您需要创建一个listAdapter和其他一些东西。在本教程中,它们使用数组中的硬编码值。您可以尝试使其正常工作,然后删除硬编码数据,并使用从数据库中获取的数据

让它工作起来比你想象的要复杂一些,但也不太复杂

希望这有助于:


您能帮我们一个忙,发布您的日志文件或错误消息吗?谢谢您返回的是
stone
而不是
stonelist
查看您的返回值'List',这是您的类名非常容易误导的一点
MyStonesDatabase
是存储在数据库中的项目,但我首先认为它是您的实际数据库谢谢您的回复是的。我刚意识到在吃这个之前我需要更多的学习,所以我买了一些电子书。它们比所有在线教程更容易学习。:)谢谢你的接受!如果你喜欢答案,请随意投票。
public class MyStones extends ListActivity {

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


}