【发布时间】:2016-01-06 09:00:35
【问题描述】:
我正在尝试使用来自数据库的两个字符串的自定义布局填充列表视图,但遇到了一些困难。我尝试了很多方法,但都没有奏效。我希望有人能给我一个更好的解决方案。也请帮助我自定义布局。
这是数据库的构造函数
public class Vault {
public Vault() //a constructor is created for the creation of the database
{
}
public static abstract class noteInfo implements BaseColumns // a table is then created
{
public static final String USER_NAME = "user_name";
public static final String NOTE = "note";
public static final String TIMESTAMP = "timestamp";
public static final String DATABASE_NAME = "vault";
public static final String TABLE_NAME = "note_cabinet";
}
}
这里是数据库的适配器 公共类 noteOperations 扩展 SQLiteOpenHelper { public static final int database_version = 1;
public String CREATE_QUERY = "CREATE TABLE " + noteInfo.TABLE_NAME + "(" + noteInfo.NOTE+ " TEXT," + noteInfo.TIMESTAMP + " TEXT," + noteInfo.USER_NAME + " TEXT);";
public noteOperations(Context context) {
super(context, noteInfo.DATABASE_NAME, null, database_version);
Log.d("Note operations", "Database created");
}
@Override
public void onCreate(SQLiteDatabase sdb) {
sdb.execSQL(CREATE_QUERY);
Log.d("Note operations", "Table created");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
public void putInformation(noteOperations no, String note, String timestamp, String user)
{
SQLiteDatabase SQ = no.getReadableDatabase();
ContentValues cv = new ContentValues();
cv.put(noteInfo.NOTE, note);
cv.put(noteInfo.TIMESTAMP, timestamp);
cv.put(noteInfo.USER_NAME, user);
SQ.insert(noteInfo.TABLE_NAME, null, cv);
Log.d("Note operations", "One note inserted");
}
public Cursor getInformation(noteOperations no)
{
SQLiteDatabase SQ = no.getReadableDatabase();
String[] columns = {noteInfo.NOTE, noteInfo.TIMESTAMP};
Cursor CR = SQ.query(noteInfo.TABLE_NAME, columns, null, null, null, null, null);
Log.d("Note operations", "Table combed");
return CR;
}
public void deleteUser(noteOperations no, String user_name)
{
String selection = noteInfo.USER_NAME + " LIKE ? AND " + noteInfo.NOTE + " LIKE ?" + noteInfo.TIMESTAMP + " LIKE ?";
String args[] = {user_name};
SQLiteDatabase SQ = no.getWritableDatabase();
SQ.delete(noteInfo.TABLE_NAME, selection, args);
Log.d("Databsse operations", "User deleted");
}
public Cursor getallrows(noteOperations no)
{
SQLiteDatabase SQ = no.getReadableDatabase();
String[] columns = {noteInfo.NOTE, noteInfo.TIMESTAMP};
Cursor CR = SQ.query(noteInfo.TABLE_NAME, columns, null, null, null, null, null, null);
if (CR != null)
{
CR.moveToFirst();
}
return CR;
}
}
这是列表视图的自定义布局的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bubble_drawable" >
<TextView
android:id="@+id/noteView_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:padding="4dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffff"
android:textStyle="bold" />
<TextView
android:id="@+id/timestampView_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/noteView_layout"
android:padding="3dp"
android:text="TextView"
android:textColor="#ffffff"
android:textStyle="bold" />
</RelativeLayout>
【问题讨论】:
-
当然,见
SimpleCursorAdapter -
我还是不明白。你能根据我的代码进一步解释吗?
-
向谷歌叔叔询问:
SimpleCursorAdapter,他会举很多例子来回答 -
哦宝贝,我知道你应该真的改进你的谷歌搜索,因为来自here 的第三个链接是你需要的,但你似乎太懒了 即使是这样简单的查询
-
还有一个对未来的好建议,下次尽量礼貌一点,注意你的语言,明白了吗?
标签: android database sqlite listview android-listview