我不确定我是否正确行事,因为我对这种编程语言知之甚少......或者其他任何事情。让我们看看我是否能让它变得有意义,这样我才能得到一些帮助。
我正在对我的数据库运行查询以提取数据库中的所有条目
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();
}
}
然后我从我的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)
有人可以帮我理解为什么这不起作用吗?
提前谢谢你,我为这个巨大的帖子道歉!
答案 0 :(得分:1)
您在ArrayAdapter
和您的PastGames Activity
根视图中使用相同的布局。我想你不想在活动布局中使用ListView
的布局。我认为这是导致ClassCastException
的原因,因为您的ListView
布局可能被定义为只使用一个简单的TextView
,并且活动正在爆炸说它无法投射ListView
到TextView
。
答案 1 :(得分:1)
您没有正确创建要传递给listView的适配器。如果您查看适配器的构造函数,则正在等待TextView。对于主布局和此textView,您没有相同的资源。我认为您需要创建Textview并将其传递给构造函数;)