android - 数据库查询到ListActivity

标签 android listview 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 的单独类(因为我希望所有内容都显示在 ListView 中。

过去的游戏.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();


}

然后我从我的主要 Activity 中调用它(只是要注意,不会扩展 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;
    }

因此,如果我理解正确,我将从我的主要 Activity (然后启动 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 Root View 中使用相同的布局。我想您不想将 ListView 的布局用于您的 Activity 布局。我认为这就是导致 ClassCastException 的原因,因为您的 ListView 布局可能被定义为仅使用一个简单的 TextView,而 Activity爆炸说它不能将 ListView 转换为 TextView

关于android - 数据库查询到ListActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337078/

相关文章:

安卓。 SQLite 异常 : no such column _id

android - 项目不显示在 Android Studio 蓝图或设计中

android - 在gradle build脚本中调用程序之前,如何检查程序是否在PATH上?

android - 如何使用带有 Okhttp3 的 retrofit2 禁用 URL 编码

android - 顶部和底部的 TextViews,剩余空间填充 ListView

Android ListView丢失项目高度

android - 具有不同项目布局的 ListView 的 ViewHolders

android - 如何从 BackStack 恢复现有的 Fragment

android - 如何更改项目点击时 ListView 的内容?

android - 在 xml 中构建此布局?