【发布时间】:2016-05-17 13:25:40
【问题描述】:
我知道关于这个问题有类似的问题,但没有一个对我有用。
我正在制作一个具有ListView 的闹钟应用程序,其中显示了存储在数据库中的所有闹钟。当用户长按其中一个ListView 项目时,会显示一个对话框,确认他们确实要删除选定的警报,单击“是”按钮后,警报将被删除。
问题是我的ListView 仅在我开始另一个活动后才会刷新,然后回到ListView 所在的那个,我想知道我需要做什么才能在警报响起时立即刷新它已删除。
PS.: 我已经试过adapter.notifyDataSetChanged();
这是我的代码:
UITools.adaptAlarmsListView(this, listView, R.layout.alarm_listview_item);
listView.setOnItemLongClickListener(
new AdapterView.OnItemLongClickListener()
{
@Override
public boolean onItemLongClick(AdapterView<?> adapterView,
View view,
final int position, long l)
{
final boolean[] deletedFlag = {false}; // Tells if the alarm has been deleted
UITools.showDialogue(HomeActivity.this,
getString(R.string.delete),
getString(R.string.delete_question),
R.drawable.bin, getString(R.string.no),
new DialogInterface.OnClickListener()
{
@Override
public void onClick(
DialogInterface dialogInterface, int i)
{
// Do nothing
}
}, getString(R.string.yes),
new DialogInterface.OnClickListener()
{
@Override
public void onClick(
DialogInterface dialogInterface, int i)
{
AlarmDAO.delete(getBaseContext(),
position + 1);
UITools.showToast(getBaseContext(),
getString(R.string.deleted),
Toast.LENGTH_SHORT);
deletedFlag[0] = true;
}
});
if (deletedFlag[0])
{
listView.setAdapter(null);
UITools.adaptAlarmsListView(HomeActivity.this,
listView, R.layout.alarm_listview_item);
}
return true;
}
}
);
UITools.adaptAlarmsListView:
/**
* Adapts the alarms ListView
* @param context - Context
* @param listView - ListView
* @param listViewItemId - int
*/
public static void adaptAlarmsListView(Context context, ListView listView,
int listViewItemId)
{
Alarm[] alarms = AlarmDAO.getAlarms(context);
AlarmAdapter adapter = new AlarmAdapter(context, listViewItemId, alarms);
listView.setAdapter(adapter);
}
【问题讨论】:
-
你需要发布你的代码。
-
只需重新运行最初加载它的代码即可。
-
@jzarsuelo,已发布
标签: android listview dataset refresh