【问题标题】:CursorAdapter not showing any data in ListViewCursorAdapter 未在 ListView 中显示任何数据
【发布时间】:2013-07-28 05:46:10
【问题描述】:

这是我的活动代码。我刚刚开始学习android。 而且我无法通过 ListView 上的 SimpleCursorAdaptor 获取任何数据 当我使用 ArrayAdaptor 时,我可以在 ListView 上获取数据,但不能使用 Simple Cursor Adaptor

public class LaunchActivity extends Activity {
ListView taskList;
SQLiteDatabase db ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_launch);

    // Log.d("Anuranjit", "IN activity");
    taskList = (ListView) findViewById(R.id.TaskList);
    taskList.setDividerHeight(7);

    TaskDatabaseManager taskManager = new TaskDatabaseManager(
            getApplicationContext());
    db = taskManager.getWritableDatabase();
    addData();
    Cursor c=db.rawQuery("Select * from "+TaskDatabaseManager.DATABASE_TABLE, null);
    c.moveToFirst();
    String[] fromCol={TaskDatabaseManager.KEY_ROWID,TaskDatabaseManager.TASK_DESCRIPTION,TaskDatabaseManager.TASK_STATUS,TaskDatabaseManager.TASK_TIMESTAMP};
    int[] v={R.id.TaskList,R.id.TaskList,R.id.TaskList,R.id.TaskList};
        SimpleCursorAdapter sa=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1 ,c,fromCol,v,0);

        taskList.setAdapter(sa);
}

public void addData(){
    Date c=new Date();
    db.execSQL("insert into "+TaskDatabaseManager.DATABASE_TABLE+"( "+TaskDatabaseManager.TASK_DESCRIPTION+","+TaskDatabaseManager.TASK_TIMESTAMP +","+TaskDatabaseManager.TASK_STATUS+") values ('Hello World',' "+(new Timestamp(c.getTime()))+" ' ,'0');");
    Cursor ac=db.rawQuery("Select * from "+TaskDatabaseManager.DATABASE_TABLE, null);
    ac.moveToFirst();
    Toast.makeText(getApplicationContext(), String.valueOf(ac.getCount()), Toast.LENGTH_LONG).show();
    Toast.makeText(getApplicationContext(), ac.getString(1), Toast.LENGTH_LONG).show();
}

}

启动器活动布局。我在 XML 中只有一个列表视图,这是问题吗?

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LaunchActivity" >

<ListView
    android:id="@+id/TaskList"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:divider="@android:color/holo_green_light" >
</ListView>

【问题讨论】:

    标签: android android-cursoradapter


    【解决方案1】:

    这条线是你的问题。

     int[] v={R.id.TaskList,R.id.TaskList,R.id.TaskList,R.id.TaskList};
    

    您必须将光标中的值映射到列表项布局中的文本字段。不在考虑列表视图的布局中。

    您正在为列表项使用通用布局 (android.R.layout.simple_list_item_1) 尝试自己制作。 (简单的 xml 布局,每个要显示的值都包含 1 个 TextView)然后:

    SimpleCursorAdapter sa=new SimpleCursorAdapter(this,R.layout.my_list_item ,c,fromCol,v,0);
    

    int[] v={R.id.textView1,R.id.textView2,R.id.textView3,R.id.textView4};
    

    【讨论】:

    • 感谢您的回答!那么我应该删除我的 标签吗?或者我应该创建一个新的布局并保持我的列表不变。
    • 没有列表视图必须保留。 ListView 包含列表项的列表,并且列表项有自己的布局。
    猜你喜欢
    • 2018-10-07
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 2019-10-19
    • 1970-01-01
    • 2021-07-17
    • 2014-05-14
    相关资源
    最近更新 更多