2011-06-13 65 views
1

我不知道我是这样做的,因为我对这种编程语言的知识有限......或者对于这个问题。让我们看看我是否能够做到这一点,以便我可以得到一些帮助。数据库查询到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, null, null, null); 
} 

我已经然后创建延伸ListActivity一个单独的类(因为我希望所有的内容显示在列表视图。

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


} 

}

,然后我打电话,从我的主要活动(这只是要注意,不扩展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。从我的主要活动(然后启动PastGames.java),并在PastGames.java内的java - onCreate我打开数据库,运行我的查询,关闭并希望进入列表视图

我在LogCat中获得以下内容选项ulator:

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) 

有人能帮我理解为什么这个工作不正常吗?

预先感谢您,我为这个巨大的帖子道歉!

回答

1

您在ArrayAdapter和您的PastGames Activity根视图中使用相同的布局。我想象你不想为你的活动布局使用ListView的布局。我认为这是导致ClassCastException的原因,因为你的ListView的布局可能被定义为只使用一个简单的TextView,并且该活动吹起来说它不能将ListView投射到TextView

+0

因此,我删除了创建setContentView,并且我的XML文件是线性布局中的TextView。 我现在正在获取ArrayAdapter需要的资源ID是一个TextView 我该怎么改变呢? – Rob 2011-06-13 23:02:33

+0

GOT IT!我需要从xml中删除线性布局,并且只能使用textview! – Rob 2011-06-13 23:25:28

1

您没有正确创建要传递给listView的适配器。如果你看看适配器的构造函数,正在等待TextView。它没有任何意义,你有主要布局和这个textView相同的资源。我认为你需要创建Textview并将其传递给构造函数;)