【发布时间】:2021-02-20 06:20:50
【问题描述】:
我有一个列表视图,我在其中使用助手从 firebase 检索数据并通过将它们绑定到 .xaml 中来显示它,如下所示:
助手:
public class FirebaseHelper
public async Task<List<Books>> GetAllBooks()
{
return (await firebase
.Child("Books")
.OnceAsync<Books>()).Select(item => new Books
{
Title = item.Object.Title,
Author = item.Object.Author,
Genre = item.Object.Genre,
Cover = item.Object.Cover
}).ToList();
}
page.xaml.cs
public List<Books> libriall;
protected async override void OnAppearing()
{
base.OnAppearing();
bookall = await firebaseHelper.GetAllBooks();
listbook.ItemsSource = bookall;
}
以及 .xaml 文件中的 listview listbook 的一部分:
<Label
TextColor="#33272a"
Text="{Binding Title}"
x:Name="bTitle"/>
好的,现在我在 ViewCell 中放了一个 Button,我想获取书名并在 PostAsync 中使用它,所以我基本上需要获取单个书名并将其放入字符串中。
已经在 helper 中创建了类似的方法:
public async Task<string> getTitle()
{
return (await firebase
.Child("Books")
.OnceAsync<Books>()).Select(item => new Books
{
Title = item.Title
}).ToString();
}
但我不知道如何将书籍属性链接到它们与绑定一起显示的单个视单元,知道吗?
【问题讨论】:
-
如果
GetAllBooks检索到标题,为什么还需要另一个方法getTitle来获取标题? -
getAllBooks 返回一个 List,GetTitle 返回一个字符串
-
是的,但是该列表包含一个 Book 列表,并且每个 Book 已经有一个 Title 属性。为什么你需要再次检索它,而不是从你已经拥有的书中拉出来?您正在单击列表中的一行,您只想获取该行的书名?
-
我只想要我正在交互的行中的标题,如果我使用 GetAllBooks,我会得到所有书籍及其属性的列表,而我只想要一个字符串。
-
您不需要再次调用
GetAllBooks,您已经拥有ItemsSource中的所有数据
标签: listview firebase-realtime-database xamarin.forms binding