亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習筆記之CursorAdapter

發布時間:2020-10-02 05:22:08 來源:網絡 閱讀:515 作者:cpoopc 欄目:開發技術

CursorAdapter:通過該類可以用Cursor的方式訪問數據庫,并將查詢出來的數據展示到列表視圖(ListView)部件上。其中游標攜帶的結果集中必須有列名為“_id”的列,否則這個類無法工作。

sqlite查詢獲得Cursor,可以通過CursorAdapter將數據方便的顯示在listview上.

使用方法:與BaseAdapter類似,需要重寫CursorAdapter中的一些方法

下面用偽代碼演示主要步驟:


CursorAdapter:

1.繼承適配器:

class Myadapter extends CursorAdapter

2.構造函數://需要傳入上下文,游標對象,用于遍歷數據

public Myadapter(Context context, Cursor c) {

super(context, c);

}

2.newView():

inflate行布局

3.bindView()

在行布局中顯示當前cursor所指向的數據


listview:

1.獲得listview實例

ListView listview = findviewbyid(R.id.listview);

2.設置適配器

listview.setAdapter(myadapter);//cursor = db.query();

                               //myadapter = new Myadapter(this,cursor)


幾點思考:

1.學完CursorAdapter后,想起之前學習BaseAdapter時候的優化,便想對其也進行優化,發現CursorAdapter中并沒有convertview,而且其將getView分成了newView和bindView,百思不得其解.百度之后才發現,原來系統已經幫我們做了一步優化,其內部代碼

public View getView(int position, View convertView, ViewGroup parent) {
    if (!mDataValid) {
        throw new IllegalStateException("this should only be called when the cursor is valid");
    }
    if (!mCursor.moveToPosition(position)) {
        throw new IllegalStateException("couldn't move cursor to position " + position);
    }
    View v;
    if (convertView == null) {
        v = newView(mContext, mCursor, parent);
    } else {
        v = convertView;
    }
    bindView(v, mContext, mCursor);
    return v;
}

當convertView==null的時候才去調用newView.

2.如何獲得id?

記得CursorAdapter要求我們必須以_id作為主鍵不?系統幫我們把_id通過getItemId()返回,再傳遞到一些對象方法中,如:

listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                db.delete("contact", "_id=?", new String[]{String.valueOf(id)});
                Cursor cursor = db.query("contact", null, null, null, null, null, null);
                myadapter.changeCursor(cursor);
                myadapter.notifyDataSetChanged();
                Log.e("id", id+"");
            }
        });

代碼為刪除listview點擊行顯示的表"contact"的數據.long id 即為系統幫我們傳遞過來的_id.這是通過getItemId()返回的,若要修改id,可以重寫此方法.


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资源县| 彰武县| 手机| 额敏县| 罗江县| 公安县| 涡阳县| 伊通| 屏南县| 遂溪县| 司法| 和顺县| 长沙县| 垫江县| 宣威市| 宜兰县| 西乌珠穆沁旗| 张家界市| 邢台市| 盘锦市| 双桥区| 扎兰屯市| 安吉县| 乾安县| 额济纳旗| 昔阳县| 清水县| 汽车| 贺州市| 冀州市| 巴青县| 巴林左旗| 邵阳市| 阳泉市| 石狮市| 景东| 舟山市| 枝江市| 丹凤县| 广饶县| 太白县|