Как в официальной документации :
Хотя Cloud Firestore может хранить массивы,
it does not support
запрашивать элементы массива или обновлять отдельные элементы массива.Если вы хотите получить весь массив
papers
, вам нужно выполнить итерацию поMap
следующим образом:Map
map = documentSnapshot.getData(); for (Map.Entry entry : map.entrySet()) { if (entry.getKey().equals("Phonenumbers")) { Log.d("TAG", entry.getValue().toString()); } } Но обратите внимание, что даже если объект
Phonenumbers
сохраненный в базе данных как массив,entry.getValue()
возвращаетArrayList
, а неarray
.Вам нужно использовать индексы только при запросе своей базы данных с использованием более одного свойства. Но это не ваш случай.
Лучше будет выглядеть эта альтернативная структура базы данных, где каждый номер телефона является ключом на карте, и все значения истинны:
Phonenumbers: { "987654321": true, "123456789": true, "234567890": true }
Редактировать 13 августа 2018 года:
Согласно обновленной документации относительно членства array , теперь можно фильтровать данные на основе значений массива с использованием метода
whereArrayContains()
. Простым примером может быть:CollectionReference citiesRef = db.collection("cities"); citiesRef.whereArrayContains("regions", "west_coast");
Этот запрос возвращает каждый городской документ, где поле регионов представляет собой массив, содержащий west_coast. Если массив имеет несколько экземпляров запрашиваемого значения, документ включается в результаты только один раз.
blockquote>
Вы можете поместить его в словарь ресурсов и ссылаться на него из кода. В качестве альтернативы вы можете использовать триггер события для запуска раскадровки в XAML:
<UserControl.Resources>
<Storyboard x:Key="TheStoryboard">
<DoubleAnimation Storyboard.TargetProperty="Height"
To="500" Duration="0:0:0.5"
Storyboard.TargetName="X" /> <!-- no need to specify From -->
</Storyboard>
</UserControl.Resources>
Чтобы начать с кода:
((Storyboard)this.Resources["TheStoryboard"]).Begin(this);
Чтобы начать с XAML:
<UserControl.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="TheButton">
<BeginStoryboard Storyboard="{StaticResource TheStoryboard}"/>
</EventTrigger>
</UserControl.Triggers>
Если кнопке присвоено имя:
<Button Name="TheButton" Content="Start" />
Storyboard sb = (Storyboard)btnPause.FindResource("PauseStoryboard");
//to start
sb.Begin(btnPause, true);
//to stop
sb.Stop(btnPause);
<Button x:Name="btnPause" Width="28" Background="LightCyan" Click="btnPause_Click">
<Image Source="Images\pause.png"></Image>
<Button.Resources>
<Storyboard x:Key="PauseStoryboard">
<ColorAnimation To="Yellow" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True"/>
</Storyboard>
</Button.Resources>
</Button>
<Window.Resources>
<Storyboard x:Key="test">
...
</Storyboard>
</Window.Resources>
Storyboard sb = this.FindResource("test") as Storyboard;
sb.Begin();