我需要创建显示数据库sql元素的列表视图的帮助。
首先创建一个具有3个字段的ID为Text1,Text2 and Text3的TextView的小型xml布局
和我的活动中的一个列表视图。
将接口中的列分组后

public interface TableRegistry extends BaseColumns{

     String TABLE_NAME = "Registry";

     String TYPE = "Type";
     String DATE = "Date";
     String STATUS = "Status";
     String NUMBER = "Number";
     String MESSAGE = "Message";
     String OTHER = "Other";

     String[] COLUMNS = new String[]
                { _ID, TYPE, DATE, STATUS, NUMBER, MESSAGE, OTHER };
            }


在我创建数据库类之后。

public class APdatabaseClass extends  SQLiteOpenHelper {

    private static final String DATABASE_NAME = "APdatabase";
    private static final int DATABASE_VERSION = 1;

    public APdatabaseClass(Context context) {
        super(context, DATABASE_NAME , null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String sql = "CREATE TABLE {0} ({1} INTEGER PRIMARY KEY AUTOINCREMENT," +
                " {2} TEXT NOT NULL,{3} TEXT NOT NULL,{4} TEXT NOT NULL,{5} TEXT NOT NULL,{6} TEXT NOT NULL, {7} TEXT NOT NULL);";
            db.execSQL(MessageFormat.format(sql, TableRegistry.TABLE_NAME, TableRegistry._ID,
                TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS, TableRegistry.NUMBER, TableRegistry.MESSAGE, TableRegistry.OTHER));

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TableRegistry.TABLE_NAME);

        // Create tables again
        onCreate(db);
    }


现在,如何使用SimpleCursorAdapter或其他方法将数据库连接到活动中的listview?我需要使用以下命令填充3个TextView字段:

TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS.


提前致谢!

最佳答案

看来您将需要一些额外的工作。这是我通常的做法:

在数据库助手中首先创建方法以获取所需的信息:

public Cursor fetchListData() {
    return mDb.query(TableRegistry.TABLE_NAME, new String[] { TableRegistry._ID,
        TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }, null,null,
        null, null, null);
}


然后在任何要创建列表的类中:

APdatabaseClass mDbHelper = new APdatabaseClass(getActivity());
mDbHelper.open();

Cursor c = fetchListData();
getActivity().startManagingCursor(c);

String[] from = new String[] { TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS };
int[] to = new int[] {  R.id.Text1, R.id.Text2, R.id.Text3  };
SimpleCursorAdapter data = new SimpleCursorAdapter(getActivity(), R.layout.yourlistlayout, c, from, to);
setListAdapter(data);


请注意,这假设您正在使用ListFragment或ListActivity。如果不是,设置适配器的方式将稍有不同。

希望这可以帮助!

关于java - Android:ListView上的Sqlite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10116614/

10-12 00:12
查看更多