c# - with - xamarin forms firebase database example
Rellene Spinner con datos de la base de datos de Firebase Tabla Xamarin (1)
Quiero llenar un spinner con una lista de cadenas de una tabla en mi base de datos de firebase.
Quiero que la ruleta contenga el nombre de la categoría de los artículos, por lo tanto, Prueba, Naturaleza, etc.
Mi xaml se ve así:
<Spinner
android:spinnerMode="dialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/spinnerCategory"
android:layout_margin="7dp" />
Desde aquí, no estoy seguro de cómo llenar la ruleta con datos.
Quiero llenar un spinner con una lista de cadenas de una tabla en mi base de datos de firebase.
Primero, asegúrate de haber recuperado los datos correctamente:
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;
}
Notas: Cardo datos usando HashMap, así que cuando recupero datos, también los vuelvo a convertir a hashmap.
Luego, crea tu método UpdateSpinner
para llenar el 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;
}
Y el Spinner
se llenará correctamente: