数据库查询到ListActivity

问题描述

| 我不确定自己对这种编程语言的了解...还是与此有关的任何事情,都无法做到这一点。让我们看看我是否可以说得通,以便获得帮助。 我正在对数据库运行查询,以提取数据库中的所有条目 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);
}
然后,我创建了一个扩展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();


}
} 然后我从Main活动中调用它(请注意,它不会扩展ListActivity
    @Override
public boolean onoptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
case R.id.past_games:
            Intent intentListGames = new Intent().setClass( this,PastGames.class );
            this.startActivityForResult( intentListGames,0 );
            return true;
   }
        return true;
    }
因此,如果我正确理解这一点,那么我将从主活动(然后启动PastGames.java)并在PastGames.java中调用PastGames.java-onCreate我正在打开数据库,运行查询关闭并希望将其放入listview 在模拟器中运行该选项时,我在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)
有人可以帮我了解为什么这不起作用吗? 在此先感谢您,对于我的宝贵帖子深表歉意!     

解决方法

        您在
ArrayAdapter
和PastGames
Activity
根视图中使用的布局相同。我想象您不想将“ 6”的布局用于“活动”布局。我认为这是造成ѭ7的原因,因为您的ѭ6的布局可能被定义为仅使用简单的ѭ9,并且活动处于爆炸状态,无法将ѭ6强制转换为ѭ9。     ,        您没有正确创建要传递给listView的适配器。如果您看一下适配器的构造函数,则正在等待TextView。而且对于主布局和此textView您没有相同的资源。我认为您需要创建Textview并将其传递给构造函数;)