gpt4 book ai didi

Android - Listview删除项目并刷新

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:23 27 4
gpt4 key购买 nike

我正在尝试实现具有删除功能的 ListView,以从 ListView 中删除项目。我成功删除了但在从数据库中删除项目后无法刷新 ListView 。

实际上,单击 listitem,我正在显示“删除”和“取消”操作的 AlertBox,单击“删除”时,项目应该从数据库中删除,并且应该刷新 ListView 。我还使用了 notifyDataSetChanged() 方法。

lview = (ListView) findViewById(R.id.lview);
adapter = new ListView_CustomAdapter(this, listitemDisplay);
lview.setAdapter(adapter);

lview.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id)
{
Show_Alert_box(v.getContext(),"Please select action.",position);
}
});

和 Show_Alert_box 的代码:

 public void Show_Alert_box(Context context, String message,int position)
{
final int pos = position;

final AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle(getString(R.string.app_name_for_alert_Dialog));
alertDialog.setButton("Delete", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

try
{
db.open();
String[] whereArgs={String.valueOf(pkID)};
return db.delete(DATABASE_TABLE_4,"pk_pkID == ?",whereArgs);
adapter.notifyDataSetChanged();
db.close();
}
catch(Exception e)
{

}
} });
alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
} });

alertDialog.setMessage(message);
alertDialog.show();
}

最佳答案

它是否将其从您的列表适配器中删除?否则,这就是 notifyDataSetChanged() 对您没有多大用处的原因。

实际上再次查看您的代码我只能发现您正在从数据库中删除它而不是适配器本身。

编辑(回答评论):好吧,如果没有您的 ListView_CustomAdapter 类,这很难做到。问题是,在此适配器中有一个数据集(您放入构造函数 (listitemDisplay) 的数据集)也需要更新。只有这样 notifyDataSetChanged() 才会起作用。

关于Android - Listview删除项目并刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com