簡體   English   中英

在CursorAdapter中獲取ContentResolver

[英]Get a ContentResolver within a CursorAdapter

我最近開始自學Android開發。 現在,我正在制作一個顯示盒子列表的應用程序; 單擊一個框將顯示其內容。 主列表中的每個行視圖在框名稱旁邊都有一個“刪除”圖標。 我的ListAdapter是CursorAdapter的子類。 CursorAdapterbindView()方法中,我執行以下操作:

@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView name = (TextView) view.findViewById(R.id.text_box_name);
    name.setText(cursor.getString(cursor
            .getColumnIndex(DatabaseContract.BoxEntry.NAME)));
    name.setFocusable(false);
    ImageButton delete = (ImageButton) view.findViewById(R.id.button_box_delete);
    delete.setFocusable(false);
    delete.setTag(cursor.getLong(0));
    delete.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            long id = ((Long) view.getTag());
        }
    });
}

如您所見,我為每個ImageButton標記了應該刪除的框的ID。 我想在這里做的是:

getContentResolver().delete(uri...);

此代碼將告訴我的自定義ContentProvider刪除該框及其所有內容。 明顯的問題是,從我的CursorAdapter的上下文中,我無法調用getContextResolver CursorAdapter內部與我的ContentProvider交談的最佳方法是什么? 提前致謝!

Context包含方法getContentResolver(),因此您可以將bindView編寫為:

@Override
public void bindView(View view, final Context context, Cursor cursor) {
    TextView name = (TextView) view.findViewById(R.id.text_box_name);
    name.setText(cursor.getString(cursor
        .getColumnIndex(DatabaseContract.BoxEntry.NAME)));
    name.setFocusable(false);
    ImageButton delete = (ImageButton) view.findViewById(R.id.button_box_delete);
    delete.setFocusable(false);
    delete.setTag(cursor.getLong(0));
    delete.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            long id = ((Long) view.getTag());
            context.getContentResolver().delete(uri...);
        }
    });

}

請注意,您的context必須是final ,以便在匿名內部類中引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM