У меня есть список в JSON, и я десериализую его. Это выглядит так:
[
{
"Nazwa": "Czekolada mleczna Sport & Fitness",
"Opis": "Przykładowy opis produktu Czekolada mleczna Sport & Fitness",
"Zdjecie": "https://www.friars.co.uk/images/lindt-gold-milk-chocolate-bar-p504-7263_image.jpg",
"WW": 0.28,
"WBT": 0.22,
"Energia": 31.8125,
"Tluszcz": 2.19375,
"Weglowodany": 3.225,
"Blonnik": 0.11875,
"Bialko": 0.45625,
"Zelazo": 0.1875,
"Wapn": 15.5,
"Code": "czokolate_1"
},
{
"Nazwa": "Czekolada mleczna Sport & Fitness2",
"Opis": "Przykładowy opis produktu Czekolada mleczna Sport & Fitness2",
"Zdjecie": "https://vaya.in/recipes/wp-content/uploads/2018/02/Milk-Chocolate-1.jpg",
"WW": 0.16,
"WBT": 0.21,
"Energia": 28.5625,
"Tluszcz": 2.19375,
"Weglowodany": 2.94375,
"Blonnik": 0.4875,
"Bialko": 0.34375,
"Zelazo": 0.8125,
"Wapn": 0,
"Code": "czokolate_2"
}
]
Я использую ZXing. Net .Mobile.Forms для сканирования QR-кода. Для обработки результата у меня есть этот код:
public Item item { get; set; }
public void Handle_OnScanResult(Result result)
{
Device.BeginInvokeOnMainThread(async () =>
{
string code = item.Code;
string wynik = result.Text;
if (wynik == code) {
await Navigation.PushAsync(new ItemDetailPage(item.Nazwa, item.Opis, item.Zdjecie, item.WW, item.WBT, item.Energia, item.Tluszcz, item.Weglowodany, item.Blonnik, item.Bialko, item.Zelazo, item.Wapn, item.Code));
await DisplayAlert("Wyszukaj?", item.Nazwa, "OK");
}
});
}
item.Code - это значение, назначенное элементу в списке JSON, и QR-код также имеет это значение, если я использую
Device.BeginInvokeOnMainThread(async () =>
{
string wynik = result.Text;
await DisplayAlert("Wyszukaj?", wynik, "OK");
}
});
Показывает это значение «код» . Я хочу, чтобы он показывал страницу сведений со всеми значениями (у меня она есть, но только когда вы нажимаете на элемент в списке, он отправляет все значения этого элемента в ItemDetailPage) ItemPage
async void OnItemSelected(object sender, SelectedItemChangedEventArgs args)
{
if (!(args.SelectedItem is Item item))
return;
await Navigation.PushAsync(new ItemDetailPage(item.Nazwa, item.Opis, item.Zdjecie, item.WW, item.WBT, item.Energia, item.Tluszcz, item.Weglowodany, item.Blonnik, item.Bialko, item.Zelazo, item.Wapn, item.Code));
// Manually deselect item.
ItemsListView.SelectedItem = null;
}
ItemDetailPage
public ItemDetailPage(string Nazwa, string Opis, string Zdjecie, float WW, float WBT, float Energia, float Tluszcz, float Weglowodany, float Blonnik, float Bialko, float Zelazo, float Wapn, string Code)
{
InitializeComponent();
tytul.Title = Nazwa;
nazwa.Text = Nazwa;
opis.Text = Opis;
foto.Source = ImageSource.FromUri(new Uri(Zdjecie));
ww_item.Text = WW.ToString();
wbt_item.Text = WBT.ToString();
energia_item.Text = Energia.ToString();
tluszcz_item.Text = Tluszcz.ToString();
weglowodany_item.Text = Weglowodany.ToString();
blonnik_item.Text = Blonnik.ToString();
bialko_item.Text = Bialko.ToString();
zelazo_item.Text = Zelazo.ToString();
wapn_item.Text = Wapn.ToString();
}
Я хочу, чтобы он переместился в ItemDetailPage с деталями элемента, которые имеют то же значение "кода", что и QR-код, ИЛИ я хочу, чтобы элемент ItemPage отображался только с теми элементами, которые имеют "код" "значение в виде QR-кода. Я пытался использовать что-то вроде панели поиска, но не могу заставить его работать с JSON list