0

我正在使用 monodroid 并尝试使用 NotifyDataSetChange。但是当我在我的 listadapter 上调用它时,它不会刷新视图。

我的代码;

    CustomListAdapter listAdapter;
    ListView listView;
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.customlist);

        listAdapter = new CustomListAdapter(this);
        listView = FindViewById<ListView>(Resource.Id.listView);
        //Hook up our adapter to our ListView
        listView.Adapter = listAdapter;

        listView.ItemLongClick += listView_ItemLongClick;
    }

    void listView_ItemLongClick(object sender, AdapterView.ItemLongClickEventArgs e)
    {

     var item = this.listAdapter.GetItemAtPosition(e.Position);

     deletevehicle(item);

    }


    private void deletevehicle(Vehicle v)
    {
        if (v != null)
        {
            VehicleDB.DeleteVehicle(v.ID);
            listAdapter.NotifyDataSetChanged();
        }
    }

该列表由我的数据库中的车辆填充,以防万一您想知道,所以我希望它是这样,以便删除车辆,然后刷新列表。

谢谢

4

1 回答 1

0

您总是可以将您的 ListAdapter 重新实例化为一个新实例。假设您的删除方法与 Web 服务交互......并导致您需要的数据更改。我建议在刷新数据时使用对话框。

private void deletevehicle(Vehicle v)
{
    if (v != null)
    {
        //Raise up a progress dialog here
        //I'm assuming that VehicleDB.DeleteVehicle is actually interacting with a service, 
        //or deleting the record from a local sqllite db.
        VehicleDB.DeleteVehicle(v.ID);
        listAdapter = new CustomListAdapter(this);
        //Make the progress Dialog invisible again
    }
}
于 2013-08-16T16:47:11.863 回答