从Firebase数据库表中填充Spinner的数据(Xamarin)

3
我希望能够从我的Firebase数据库表中获取一组字符串,并将其填充到下拉列表中。

enter image description here

我希望spinner包含项目类别名称,如Test、Nature等。
我的XAML代码如下:
<Spinner
    android:spinnerMode="dialog"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinnerCategory"
    android:layout_margin="7dp" />

从这里开始,我不确定如何用数据填充下拉列表。

1个回答

1
我希望您能帮忙翻译以下内容,这是关于编程的。需要将Firebase数据库中表格中的字符串列表填充到下拉菜单中。请确保已正确检索数据:
protected override void OnCreate(Bundle savedInstanceState)
{
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.Database);

        ...
        spinnerCategory = FindViewById<Spinner>(Resource.Id.spinnerCategory);

        FirebaseApp.InitializeApp(this);

        reference = FirebaseDatabase.Instance.Reference;
        database = FirebaseDatabase.Instance;
        if (reference != null)
        {
            //add value event listener to categories of your database.
            reference.Child("categories").AddValueEventListener(this);
        }
}

public void OnDataChange(DataSnapshot snapshot)
{
        List<string> categories=RetrieveCategories(snapshot);
        UpdateSpinner(categories);
}

private List<string> RetrieveCategories(DataSnapshot snapshot)
{
    List<string> categories = new List<string>();
    var children=snapshot.Children.ToEnumerable<DataSnapshot>();
    HashMap map;
    foreach (var s in children)
    {
        map = (HashMap)s.Value;
        if (map.ContainsKey("categoryName"))
        {
            categories.Add(map.Get("categoryName").ToString());
        }
    }

    return categories;
}

注意:我使用HashMap上传数据,因此在检索数据时,我还将其转换回HashMap。
然后创建您的“UpdateSpinner”方法以填充SPinner:
private void UpdateSpinner(List<string> categories)
{
    ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Resource.Layout.spinner_item_view, Resource.Id.text_item, categories);
    spinnerCategory.Adapter = adapter;
}

而且Spinner将被正确填充:

enter image description here


这是使用Java代码吗?当我尝试使用AddValueEventListener时,它说子查询不包含该定义? - Smac
这是C#代码和Xamarin项目。您需要使用FirebaseDatabase.Instance.Reference.Child(<nodeName>).Child(<nodeName>)...定位您的categories节点。 - Elvis Xia - MSFT

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