中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

學習筆記之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

桑植县| 吉木乃县| 顺平县| 巢湖市| 延长县| 乐安县| 略阳县| 福清市| 新野县| 莲花县| 长宁区| 永靖县| 屏东市| 双鸭山市| 横山县| 岳普湖县| 平潭县| 双桥区| 溧阳市| 吴忠市| 宁乡县| 东阳市| 天峻县| 青浦区| 嵊泗县| 嘉善县| 来宾市| 永春县| 虞城县| 莫力| 合肥市| 东源县| 广平县| 邵武市| 肃南| 石家庄市| 洛隆县| 谷城县| 绍兴市| 定边县| 图片|