Android 数据库删除后未能刷新ListActivity
我在我的Android 数据库删除后未能刷新ListActivity,android,database,refresh,listactivity,Android,Database,Refresh,Listactivity,我在我的列表活动上设置了一个长点击,它调用一个警报对话,选择删除或取消,然后是另一个警报对话以确认删除 但是,我需要刷新列表以显示更改,但看不到如何执行(注意使用ResourceCursorAdapter填充列表): 公共类检查活动扩展了ListActivity{ 私人检查; 私有静态最终整数活动_CREATE=0; 专用RMDbAdapter rmDbHelper; //private AlertDialog LongClickOptions对话框; 私人警报对话框单击选项对话框; @凌驾 创
列表活动
上设置了一个长点击
,它调用一个警报对话
,选择删除
或取消
,然后是另一个警报对话
以确认删除
但是,我需要刷新列表以显示更改,但看不到如何执行(注意使用ResourceCursorAdapter
填充列表):
公共类检查活动扩展了ListActivity{
私人检查;
私有静态最终整数活动_CREATE=0;
专用RMDbAdapter rmDbHelper;
//private AlertDialog LongClickOptions对话框;
私人警报对话框单击选项对话框;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inspection);
setupview();
setLongClick();
rmDbHelper=新的RMDbAdapter(this);
rmDbHelper.open();
//获取列表项的光标
Cursor listCursor=rmDbHelper.fetchAllInspections();
开始管理游标(列表游标);
//设置自定义列表适配器
setListAdapter(新的MyListAdapter(这个,listCursor));
}
私有void setUpViews(){
newInspection=(按钮)findViewById(R.id.new_inspection);
newInspection.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
createInspection();
}
});
}
私有void setLongClick(){
ListView lv=getListView();
lv.setOnItemLongClickListener(新的OnItemLongClickListener(){
公共布尔值长单击(AdapterView arg0,视图arg1,int行,最终长id){
Cursor Cursor=(Cursor)rmDbHelper.fetchInspection(id);
String inspectionRef=RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_REF)),“参考未知”);
String companyName=RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_COMPANY)),“公司未知”);
最终字符串inspectionDialogueText=“(“+inspectionRef+”,“+companyName+”);
ClickOptions Dialog=新建AlertDialog.Builder(检查活动。此)
.setTitle(检查对话框文本)
.setMessage(R.string.general\u text\u select\u选项)
.setPositiveButton(R.string.general_按钮_删除,新建AlertDialog.OnClickListener(){
私有AlertDialog confirmDeleteDialog;
public void onClick(DialogInterface dialog,int which){
confirmDeleteDialog=新建AlertDialog.Builder(InspectionActivity.this)
.setTitle(R.string.general\u text\u确认)
.setMessage(R.string.general\u text\u confirm\u delete)
.setPositiveButton(R.string.general_按钮_是,新建AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
rmDbHelper.deleteInspection(id);
**//此处需要刷新语句**
}
})
.setNegativeButton(R.string.general_button_cancel,new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
confirmDeleteDialog.cancel();
}
})
.create();
confirmDeleteDialog.show();
}
})
.setNegativeButton(android.R.string.cancel,新建AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
单击选项对话框。取消();
}
})
.create();
单击选项Dialog.show();
返回true;
}
});
}
//在ListActivity类中,创建一个扩展ResourceCursorAdapter的新内部类。
//此内部类是自定义游标适配器,用于管理数据绑定到列表项的方式:
私有类MyListAdapter扩展ResourceCursorAdapter{
公共MyListAdapter(上下文,游标){
超级(上下文、右布局、检查行、光标);
}
@凌驾
public void bindView(视图、上下文上下文、光标){
TextView title=(TextView)view.findViewById(R.id.inspection\u row\u item\u main\u title);
title.setText(cursor.getString(
cursor.getColumnIndex(RMDbAdapter.INSPECTION_REF));
TextView description=(TextView)view.findViewById(R.id.inspection\u row\u item\u description);
String companyName=RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_COMPANY)),“公司未知”);
String-inspectionDate=RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_DATE)),“日期未知”);
description.setText(“+companyName+”,“+inspectionDate+”);
}
}
私人检查(){
Intent i=新Intent(this,InspectionEdit.class);
startActivityForResult(i,活动\创建);
}
受保护的void onListItemClick(列表视图l、视图v、最终整数位置、最终长id){
Cursor Cursor=(Cursor)rmDbHelper.fetchInspection(id);
String inspectionRef=RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_REF)),“参考未知”);
String companyName=RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_COMPANY)),“公司未知”);
最终字符串inspectionDialogueText=“(“+inspectionRef+”,“+companyName+”);
super.onListItemClick(l、v、pos、id);
单击选项对话框=新建A
public class InspectionActivity extends ListActivity {
private Button newInspection;
private static final int ACTIVITY_CREATE=0;
private RMDbAdapter rmDbHelper;
//private AlertDialog longClickOptionsDialog;
private AlertDialog clickOptionsDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inspection);
setUpViews();
setLongClick();
rmDbHelper = new RMDbAdapter(this);
rmDbHelper.open();
// Get a Cursor for the list items
Cursor listCursor = rmDbHelper.fetchAllInspections();
startManagingCursor(listCursor);
// set the custom list adapter
setListAdapter(new MyListAdapter(this, listCursor));
}
private void setUpViews() {
newInspection = (Button)findViewById(R.id.new_inspection);
newInspection.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
createInspection();
}
});
}
private void setLongClick() {
ListView lv = getListView();
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int row, final long id) {
Cursor cursor = (Cursor) rmDbHelper.fetchInspection(id);
String inspectionRef = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_REF)), "Reference unknown");
String companyName = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_COMPANY)), "company unknown");
final String inspectionDialogueText = "(" + inspectionRef + ", " + companyName + ")";
clickOptionsDialog = new AlertDialog.Builder(InspectionActivity.this)
.setTitle(inspectionDialogueText)
.setMessage(R.string.general_text_select_option)
.setPositiveButton(R.string.general_button_delete, new AlertDialog.OnClickListener(){
private AlertDialog confirmDeleteDialog;
public void onClick(DialogInterface dialog, int which){
confirmDeleteDialog = new AlertDialog.Builder(InspectionActivity.this)
.setTitle(R.string.general_text_confirmation)
.setMessage(R.string.general_text_confirm_delete)
.setPositiveButton(R.string.general_button_yes, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
rmDbHelper.deleteInspection(id);
**//REFRESH STATEMENT NEEDED HERE..**
}
})
.setNegativeButton(R.string.general_button_cancel, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
confirmDeleteDialog.cancel();
}
})
.create();
confirmDeleteDialog.show();
}
})
.setNegativeButton(android.R.string.cancel, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
clickOptionsDialog.cancel();
}
})
.create();
clickOptionsDialog.show();
return true;
}
});
}
// In your ListActivity class, create a new inner class that extends ResourceCursorAdapter.
//This inner class is the custom CursorAdapter we will use to manage how data is bound to a list item:
private class MyListAdapter extends ResourceCursorAdapter {
public MyListAdapter(Context context, Cursor cursor) {
super(context, R.layout.inspection_row, cursor);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView title = (TextView) view.findViewById(R.id.inspection_row_item_main_title);
title.setText(cursor.getString(
cursor.getColumnIndex(RMDbAdapter.INSPECTION_REF)));
TextView description = (TextView) view.findViewById(R.id.inspection_row_item_description);
String companyName = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_COMPANY)), "Company unknown");
String inspectionDate = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_DATE)), "date unknown");
description.setText("(" + companyName + ", " + inspectionDate + ")");
}
}
private void createInspection() {
Intent i = new Intent(this, InspectionEdit.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
protected void onListItemClick(ListView l, View v, final int pos, final long id){
Cursor cursor = (Cursor) rmDbHelper.fetchInspection(id);
String inspectionRef = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_REF)), "Reference unknown");
String companyName = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
RMDbAdapter.INSPECTION_COMPANY)), "company unknown");
final String inspectionDialogueText = "(" + inspectionRef + ", " + companyName + ")";
super.onListItemClick(l, v, pos, id);
clickOptionsDialog = new AlertDialog.Builder(InspectionActivity.this)
.setTitle(inspectionDialogueText)
.setMessage(R.string.general_text_select_option)
.setPositiveButton(R.string.general_button_open, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(InspectionActivity.this, AreaActivity.class);
i.putExtra("intentID", id);
startActivityForResult(i, ACTIVITY_CREATE);
}
})
.setNeutralButton(R.string.general_button_edit, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
Intent i = new Intent(InspectionActivity.this, InspectionEdit.class);
i.putExtra("intentID", id);
startActivityForResult(i, ACTIVITY_CREATE);
}
})
.setNegativeButton(android.R.string.cancel, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
clickOptionsDialog.cancel();
}
})
.create();
clickOptionsDialog.show();
}
youradapter.notifyDataSetChanged()