【问题标题】:Printing data in listview to firebase将列表视图中的数据打印到 Firebase
【发布时间】:2021-02-20 12:53:42
【问题描述】:

我之前问过这个问题,但没人能回答。提前感谢可以提供帮助的人。

<Grid>

        <ListView x:Name="lstOrder">

            <ListView.ItemTemplate>

                <DataTemplate>

                    <ViewCell>

                        <Grid>

                            <Grid.RowDefinitions>

                                <RowDefinition/>
                                <RowDefinition/>

                            </Grid.RowDefinitions>

                            <Grid.ColumnDefinitions>

                                <ColumnDefinition/>
                                <ColumnDefinition/>

                            </Grid.ColumnDefinitions>

                            <Label Text="{Binding OrderName}" Grid.Row="0" Grid.Column="0" HorizontalTextAlignment="Start" x:Name="lblName"/>
                            <Label Text="{Binding OrderCount}" Grid.Row="0" Grid.Column="1" HorizontalTextAlignment="Start" x:Name="lblStepperValue"/>
                            <Label Text="{Binding OrderDetail}" Grid.Row="1" Grid.Column="0" HorizontalTextAlignment="Start" x:Name="edtDetail"/>
                            <Label Text="{Binding OrderPrice}" Grid.Row="1" Grid.Column="1" HorizontalTextAlignment="Start" x:Name="lblPriceNormal"/>

                        </Grid>

                    </ViewCell>

                </DataTemplate>

            </ListView.ItemTemplate>

        </ListView>

        <Button BackgroundColor="Red" VerticalOptions="End" Text="Sipariş ver" x:Name="giveOrder" Clicked="giveOrder_Clicked"/>

    </Grid>

这样我就有了一个简单的列表视图。并且数据从 realmDB 发送到这个列表视图。单击按钮时,我想将从 RealmDB 发送到此列表视图的数据发送到我的 Firebase 数据库。

我不想通过 firebase 将数据写入 listview。

我想做的是将listview中的数据打印到firebase。

这就像将标签上的文本打印到 firebase。我想将 listview 中的数据打印到 firebase。

这是我的按钮的代码块。所以当我按下这个按钮时,listview中的数据将被写入firebase。

也就是说,它将标签上的数据发送到firebase。

private async void giveOrder_Clicked(object sender, System.EventArgs e)
    {
        await firebaseHelper.AddDoner(lstOrder.**!I can't do this part!**);
    }

希望它足够有启发性。

谢谢:)

这是我为firebase写的部分,不知道这里会不会有错误?

public class FirebaseHelper
{
    readonly FirebaseClient firebase = new FirebaseClient("my firebase link");

    public async Task<List<DonerModel>> GetAllDoners()
    {
        return (await firebase
          .Child("Doners")
          .OnceAsync<DonerModel>()).Select(item => new DonerModel
          {
              OrderList = item.Object.OrderList
          }).ToList();
    }
    public async Task AddDoner( string lstOrder)
    {

        await firebase
          .Child("Doners")
          .PostAsync(new DonerModel() { OrderList = lstOrder});
    }
}

enter image description here

【问题讨论】:

  • 无论您如何为 ListView 设置 ItemsSource,您都可以使用相同的数据将数据“发送”到 Firebase。
  • 我已经为列表视图设置了项目来源,但仍然无法从列表视图发送数据

标签: firebase xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

要获取已绑定到 ListView 的对象列表,您可以使用 ItemSource 属性。

需要注意的另一点是,如果您需要确切的类型(在您的示例中为 Order),您可以这样做

private async void giveOrder_Clicked(object sender, System.EventArgs e)
{
    if(lstOrder.ItemsSource != null && lstOrder.ItemsSource is List<OrderRealm> orders)
    {
        //send orders to firebase
        foreach(var order in orders)
        {
             await firebaseHelper.AddDoner(order.*field you want to add to firebase*);
        }
        
    }
}

【讨论】:

  • 我试过了,但无法得出有效的结果。你能再帮忙一点吗?
  • 您能描述一下您现在面临的问题吗?
  • 当我使用您发送的代码块时,我可以将列表视图中的数据发送到firebase,对吗?
  • 过去几个月我一直在努力学习 Xamarini,但我学的不多,通常我是在尝试用 python android studio 做一些事情。
  • public BasketPage() { InitializeComponent(); var realmDB = Realm.GetInstance(); var myItemSource = realmDB.All&lt;OrderRealm&gt;().ToList(); lstOrder.ItemsSource = myItemSource; } private async void giveOrder_Clicked(object sender, System.EventArgs e) { if (lstOrder.ItemsSource != null &amp;&amp; lstOrder.ItemsSource is List&lt;Order&gt; orders) { //send orders to firebase await firebaseHelper.AddDoner(orders); } }
猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 2017-07-07
  • 2020-05-20
  • 1970-01-01
相关资源
最近更新 更多