在Xamarin应用程序中向Android的ListView添加项目

6
我将尝试在Xamarin应用程序中重新制作添加项到ListView的基本Android建议,但目前我失败了。
在Xamarin Studio中,我创建了一个针对“最新和最伟大”的Android应用程序,并使用所有默认设置。然后我向我的活动中添加了一个ListView,并给它一个@android:id/list的id。我已将活动的代码更改为以下内容:
[Activity (Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : ListActivity
{
    List<string> items;
    ArrayAdapter<string> adapter;

    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        SetContentView (Resource.Layout.Main);
        items = new List<string>(new[] { "Some item" });
        adapter = new ArrayAdapter<string> (this, Android.Resource.Layout.SimpleListItem1, items);
        ListAdapter = adapter;

        FindViewById<Button> (Resource.Id.myButton).Click += HandleClick;
    }

    protected void HandleClick(object sender, EventArgs e) 
    {
        items.Add ("Another Item!");
        adapter.NotifyDataSetChanged ();
        Android.Widget.Toast.MakeText (this, "Method was called", ToastLength.Short).Show();
    }
}

我建立了一个应用并在我的Nexus 5设备上运行它。应用程序正常启动,我可以点击按钮,并看到调试器命中处理程序。调试器没有显示其他问题,items.AddNotifyDataSetChanged方法都被调用而没有错误,并且Toast出现在我的设备屏幕上。
然而,项目"Another Item!"没有出现在我的列表中。
我注意到链接的问题和我的解决方案之间有一个很大的区别。在链接的问题中,代码如下:
setListAdapter(adapter);

我改为:

ListAdapter = adapter;

因为在我的 Xamarin 解决方案中没有 setListAdapter 方法,我曾经认为属性设置器是用来做同样的事情的。
简而言之:我需要做什么才能动态地向我的 ListView 添加项目?
1个回答

4
您正在向列表中添加项目,但适配器不知道该列表的存在。您应该将该项添加到适配器中:
adapter.Add ("Another Item!");

太好了。这很有效,解决了我的直接问题。您是否有任何见解,可以解释为什么Xamarin允许您直接向适配器添加项目,而不是链接Java解决方案需要支持ArrayList的情况? - Jeroen
@Jeroen:在Java中,您也可以直接向ArrayAdapter添加项目。 - Giorgi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接