【问题标题】:xamarin android - listView never populatesxamarin android - listView 从不填充
【发布时间】:2014-06-20 09:53:43
【问题描述】:

我有一个如下所示的字符串数组:

string[] uuids = new string[]{
                fashionUUID,
                foodUUID,
                electricalUUID,
                sportsUUID,
                financeUUID,
                homeGardenUUID,
                hairUUID,
                propertyUUID,
                giftsUUID,
                jewelleryUUID,
                footwareUUID

还有一个列表视图:

ListView uuidListView = FindViewById<ListView> (Resource.Id.uuidList);

然后,我尝试在单击按钮时在 ListView 中显示值。但是,我的 listView 永远不会填充任何内容。有人可以帮忙吗?

button.Click += (object sender, EventArgs e) => 
   {
        SetContentView (Resource.Layout.UUIDlist); //changes the layout

        var adapter = new ArrayAdapter<string> (this, Resource.Id.uuidList, uuids);

   };

我的包含 listView 的布局文件看起来像这样(非常简单):

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:p1="http://schemas.android.com/apk/res/android"
    p1:orientation="vertical"
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:layout_width="match_parent"
    p1:layout_height="match_parent"
    p1:id="@+id/linearLayout1">
    <ListView
        p1:minWidth="25px"
        p1:minHeight="25px"
        p1:layout_width="match_parent"
        p1:layout_height="wrap_content"
        p1:id="@+id/uuidList" />
</LinearLayout>

我在构建时没有收到任何错误,我的 listView 中没有显示任何内容。我也尝试过使用 JavaList 而不是字符串数组,但正如人们所期望的那样,我得到了相同的结果。在构建/填充列表视图时我是否遗漏了一些明显的东西?

【问题讨论】:

  • 请贴出完整的源代码
  • 完成!希望这更清楚一点。对不起。
  • 尝试使用 Android.Resource.Layout.SimpleListItem1 而不是 Resource.Id.uuidList 看看它是否可以工作。也发布布局文件
  • @InitLipton - 刚刚尝试了您的建议,没有任何区别。只是一个空白屏幕。
  • 将列表视图放入布局中 schemas.android.com/apk/res/android" android:orientation="vertical" android :layout_width="fill_parent" android:layout_height="fill_parent" >

标签: listview android-listview xamarin xamarin.android


【解决方案1】:

试试这个:

button.Click += (object sender, EventArgs e) =>
{
     .......

     ListView uuidListView = FindViewById<ListView> (Resource.Id.uuidList);
     var adapter = new ArrayAdapter<string> (this, Resource.Id.uuidList, uuids);
     uuidListView.Adapter = adapter; 
};

【讨论】:

  • 我刚刚展示了如何为您的列表视图设置适配器,它可能会抛出空引用异常,因为您的“uuidListView”将为空,您必须确保获得 ListView 对象,或者给我看看你的这个活动的布局文件。
  • 为什么要调用 SetContentView (Resource.Layout.UUIDlist);在您的按钮点击中,您当前的活动有不同的布局?
  • 感谢您对此提供的帮助。我被困了很多年,变得眼花缭乱。布局文件显示在我的 listView 活动的原始帖子中,我想这就是您的意思/需要?
  • 是的,我使用了不同的布局来显示列表视图。对我来说似乎合乎逻辑,但我是 android dev 的新手。
  • 如果您没有显示更详细的代码,那么将很难提供帮助。我认为您不能在单击按钮时像这样使用 SetContentView。
【解决方案2】:

问题是ArrayAdapter 的构造函数的第二个参数是包含在实例化视图时使用的布局的布局文件的资源 ID 而不是列表视图的 ID (uuidList)在屏幕布局中。

为简单起见,您可以为此重用内置布局,即Android.Resource.Layout.SimpleListItem1。

所以,在你的按钮点击事件中,应该是这样的:

button.Click += delegate
{
    var listview = FindViewById<ListView>(Resource.Id.uuidList);

    var adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1,
        Android.Resource.Id.Text1, uuids);
    listview.Adapter = adapter;
};

Android.Resource.Id.Text1 是Android.Resource.Layout.SimpleListItem1 中内置TextView 的ID。

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多