【问题标题】:Android/Monodroid - NotifyDataSetChange not refreshing viewAndroid/Monodroid - NotifyDataSetChange 不刷新视图
【发布时间】:2013-08-17 01:07:08
【问题描述】:

我正在使用 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();
        }
    }

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

谢谢

【问题讨论】:

  • 你不是从Adapter中删除它吗?
  • 我所做的只是代码中显示的内容,还有什么我应该做的吗?
  • 嗯,我没有看到它从 Adapter 持有的项目源中删除。 Adapter 是否以某种方式监听数据库?如果是这样,它如何通知从中删除的内容?
  • 不,我有一个车辆列表,我用该列表填充 listadpater。当调用删除车辆时,该车辆被删除,因此从列表中删除。我现在需要用新的更新列表刷新列表视图
  • 我在你的代码中没有看到...

标签: c# android list xamarin.android


【解决方案1】:

您始终可以将您的 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
    }
}

【讨论】:

  • 然后您需要验证您的 listadapter 确实获取了正确的数据,或者您的 delete 方法确实有效,因为适配器的新实例,如果您确实删除了您的记录,应该返回一个较短的列表。此链接指向“DocumentActivity”的一些代码。可以稍微扩展为管理文件。 stackoverflow.com/questions/18143358/…
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多