gpt4 book ai didi

android - 从 SQLite 数据库填充自定义 ListView

转载 作者:行者123 更新时间:2023-11-30 04:46:06 24 4
gpt4 key购买 nike

我在 onCreate() 中有这段代码:

try{
Log.i("onCreate","Trying to open database...");
orgi = this.openOrCreateDatabase("orgi", MODE_PRIVATE, null);

Log.i("onCreate","database opened.");
cursor = orgi.rawQuery("SELECT name from profile;",null);
Log.i("onCreate","successfully done with query..");
adapter = new SimpleCursorAdapter(this,R.layout.profilelistrow,cursor,
new String[]{"name"},new int[] {R.id.profileListRowTV1});
Log.i("onCreate","Adapter done");

ll.setAdapter(adapter);

}catch (SQLException e){
displayError(e.toString());
}

我应该用来自 SQLite 数据库的数据填充自定义 ListView 。但它给了我一个力量,就在这条线上:

adapter = new SimpleCursorAdapter(this,R.layout.profilelistrow,cursor, 
new String[]{"name"},new int[] {R.id.profileListRowTV1});

谁能告诉我哪里出了问题?我对简单的光标适配器一无所知(由于我在 android 中的笨拙)... R.layout.profilelistrow 是我对整个屏幕的布局,而 profileListRowTV1 是将插入“名称”的 TextView 。请就此教育我...我做错了什么?

最佳答案

我不知道是什么问题,因为您给了我们代码并且没有错误,在 eclipse -> Window -> Open Perspective -> DDMS 中。当你逼近时,看看原木猫。无论如何。这是我 friend 的一个例子。

主列表 XML...您可以在布局中的任何位置添加 ListView ...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:background="#FFFFD0"
android:layout_height="fill_parent"
android:orientation="vertical">



<ListView
android:id="@android:id/list"
android:cacheColorHint="#666666"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:textColor="#4B89E0"
android:layout_height="wrap_content"
android:text="The list is empty! Do I need this? No idea!"
/>


</LinearLayout>

下一行:现在这些会变得相当复杂。我有一个程序,其中包含一个包含 5 个图像和 3 个 TextView 的列表,android 似乎可以很好地处理它。但这是一个基本的,3 个 TextView ......也可以使用一个。

<?xml version="1.0" encoding="utf-8"?>
<!-- row.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="4dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:paddingBottom="6dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView android:id="@+id/text1"
android:textColor="#4B89E0"
android:layout_width="130dip"
android:layout_height="40dip"
android:textSize = "15dip"
/>

<TextView android:id="@+id/text2"
android:textColor="#4B89E0"
android:layout_width="70dip"
android:gravity = "center"
android:textStyle = "bold"
android:layout_height="wrap_content" />

<TextView android:id="@+id/text3"
android:textColor="#4B89E0"
android:gravity = "center"
android:layout_width="80dip"
android:layout_height="wrap_content" />

</LinearLayout>

</LinearLayout>

最后是一些代码将它们放在一起......在这个例子中调用 fillData();填写列表。我通常喜欢这样做,这样当我更改数据库时,我正在检索的信息(即我想查看:所有形状或圆形或方形)列表很容易更新。我假设您的数据库已经打开。您在 OnCreate() 中打开它。 与其将所有这些代码都放在您的 OnCreate 方法中,不如创建您自己的方法“fillData”,而您在 OnCreate 中所需要的只是 fillData();。这将使查看、编辑和故障排除变得更加容易。

private void fillData() {

Cursor fetchInfo = mDbHelper.fetchAllRecords();
startManagingCursor(fetchInfo);


// Create an array to specify the fields we want to display in the list (TITLE,DATE,NUMBER)
String[] from = new String[]{DbAdapter.KEY_TITLE,
DbAdapter.KEY_DATE, DbAdapter.KEY_AUTHOR };

// an array of the views that we want to bind those fields to (in this case text1,text2,text3)
int[] to = new int[]{R.id.text1, R.id.text2, R.id.text3};

// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.list_row, fetchInfo, from, to);
setListAdapter(notes);
}

哇卡哇卡

祝你好运

关于android - 从 SQLite 数据库填充自定义 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com