我想在我的firebase数据库中的表中填充一个带有字符串列表的微调器。
我希望微调器包含项类别名称,因此测试,自然等。
我的xaml看起来像这样:
<Spinner
android:spinnerMode="dialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/spinnerCategory"
android:layout_margin="7dp" />
从这里开始,我不确定如何使用数据填充微调器。
答案 0 :(得分: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
将正确填写: