[英]Get a ContentResolver within a CursorAdapter
我最近開始自學Android開發。 現在,我正在制作一個顯示盒子列表的應用程序; 單擊一個框將顯示其內容。 主列表中的每個行視圖在框名稱旁邊都有一個“刪除”圖標。 我的ListAdapter是CursorAdapter
的子類。 在CursorAdapter
的bindView()
方法中,我執行以下操作:
@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.