Android 对ListActivity的数据库查询

Android 对ListActivity的数据库查询,android,listview,listactivity,Android,Listview,Listactivity,我不确定我是否做得对,因为我对这种编程语言的知识有限。。。或者任何关于那件事的。让我们看看我是否能理解这一点,这样我就能得到一些帮助 我正在对我的数据库运行查询,以提取数据库中的所有条目 DBAdapter.java的一部分: //***RETRIEVES ALL THE FINALSCORES***// public Cursor getAllFinalscores() { return db.query(DATABASE_TABLE, new String[] {

我不确定我是否做得对,因为我对这种编程语言的知识有限。。。或者任何关于那件事的。让我们看看我是否能理解这一点,这样我就能得到一些帮助

我正在对我的数据库运行查询,以提取数据库中的所有条目

DBAdapter.java的一部分:

//***RETRIEVES ALL THE FINALSCORES***//
public Cursor getAllFinalscores()
{
    return db.query(DATABASE_TABLE, new String[] {
            KEY_ROWID,
            KEY_DATE,
            KEY_FINALSCORE,
            KEY_HOLESPLAYED},
            null, null, null, null, null);
}
然后,我创建了一个单独的类来扩展ListActivity(因为我希望所有内容都显示在listview中)

PastGames.java

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

public class PastGames extends ListActivity {

@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pastgames);



    DBAdapter db = new DBAdapter(this);

    db.open();
    Cursor c = db.getAllFinalscores();
    if (c.moveToFirst())
    {
        do {
            String[] listData = new String [] {c.getString(1),
                    c.getString(2), c.getString(3)};
            this.setListAdapter(new ArrayAdapter<String>(this,
                    R.layout.pastgames, listData));
        }
        while (c.moveToNext());
    }
    db.close();


}

因此,如果我理解正确,我将从我的主要活动(然后启动PastGames.java)调用PastGames.java,并在PastGames.java中-onCreate中打开数据库,运行查询,关闭并希望将其放入listview

在emulator中运行该选项时,我在LogCat中获得以下信息:

06-13 22:10:36.581: ERROR/AndroidRuntime(204): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.deckert/com.deckert.PastGames}: java.lang.ClassCastException: android.widget.TextView
06-13 22:10:36.581: ERROR/AndroidRuntime(204):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
06-13 22:10:36.581: ERROR/AndroidRuntime(204):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-13 22:10:36.581: ERROR/AndroidRuntime(204):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
有人能帮我理解为什么这不起作用吗


提前感谢您,我为这篇巨大的帖子道歉!

您在
阵列适配器中使用的布局与您的PastGames
活动根视图中使用的布局相同。我想您不想在活动布局中使用
列表视图的布局。我想这就是造成
ClassCastException的原因
,因为您的
列表视图的布局可能被定义为只使用一个简单的
文本视图
,并且活动正在爆炸,说它不能将
列表视图
转换为
文本视图

,您没有正确创建要传递到列表视图的适配器。如果您查看适配器正在等待TextView。您的主布局和此TextView具有相同的资源是没有意义的。我认为您需要创建TextView并将其传递给构造函数;)

因此我在创建时删除了setContentView,并且我的XML文件是线性布局中的TextView。我现在正在获取ArrayAdapter要求资源ID为文本视图我应该为此更改什么?明白了!我需要从xml中删除线性布局,使其仅为textview!
06-13 22:10:36.581: ERROR/AndroidRuntime(204): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.deckert/com.deckert.PastGames}: java.lang.ClassCastException: android.widget.TextView
06-13 22:10:36.581: ERROR/AndroidRuntime(204):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
06-13 22:10:36.581: ERROR/AndroidRuntime(204):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-13 22:10:36.581: ERROR/AndroidRuntime(204):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)