Android 在游标适配器中获取ContentResolver
我最近开始自学Android开发。现在我正在制作一个显示盒子列表的应用程序;单击一个框显示其内容。主列表中的每个行视图在框名称旁边都有一个“删除”图标。我的ListAdapter是Android 在游标适配器中获取ContentResolver,android,android-contentprovider,android-cursoradapter,Android,Android Contentprovider,Android Cursoradapter,我最近开始自学Android开发。现在我正在制作一个显示盒子列表的应用程序;单击一个框显示其内容。主列表中的每个行视图在框名称旁边都有一个“删除”图标。我的ListAdapter是CursorAdapter的一个子类。在CursorAdapter的bindView()方法中,我执行以下操作: @Override public void bindView(View view, Context context, Cursor cursor) { TextView name = (TextVi
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());
}
});
}
如您所见,我已经用它应该删除的框的ID标记了每个ImageButton。我希望在这里能够做到以下几点:
getContentResolver().delete(uri...);
此代码将告诉我的自定义
ContentProvider
删除该框及其所有内容。显而易见的问题是,从我的游标适配器的上下文中,我无法调用getContextResolver
。从光标或适配器中与我的内容提供者
交谈的最佳方式是什么?提前谢谢 Context
包含该方法,因此您可以将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...);
}
});
}
请注意,您的上下文必须是final
,才能在匿名内部类中引用它。谢谢!我很惊讶我错过了。我会投票,但我缺乏声誉:)