Сначала я сканирую код qr с помощью приложения, затем приложение отправляет запрос api, и я получаю json в своем ответе с моего сервера.
Я хочу получить json из моего api иотобразить его в сборщике в xaml, позвольте мне показать вам мой json
[{"srednica":"20","silowniki":[{"stroke":"25","id":"1222","price":"118.00"},{"stroke":"40","id":"1224","price":"121.60"},{"stroke":"75","id":"1542","price":"130.00"},{"stroke":"230","id":"1545","price":"167.20"},{"stroke":"275","id":"1546","price":"178.00"}]},{"srednica":"16","silowniki":[{"stroke":"125","id":"1223","price":"116.00"},{"stroke":"150","id":"1225","price":"119.00"},{"stroke":"80","id":"1537","price":"110.60"},{"stroke":"120","id":"1538","price":"115.40"}]},{"srednica":"25","silowniki":[{"stroke":"25","id":"1247","price":"126.75"},{"stroke":"180","id":"1556","price":"168.60"},{"stroke":"185","id":"1557","price":"169.95"},{"stroke":"220","id":"1558","price":"179.40"}]},{"srednica":"12","silowniki":[{"stroke":"40","id":"1373","price":"99.00"},{"stroke":"150","id":"1533","price":"110.00"},{"stroke":"200","id":"1534","price":"115.00"}]},{"srednica":"10","silowniki":[{"stroke":"10","id":"1384","price":"92.00"},{"stroke":"30","id":"1577","price":"94.00"}]}]
где «20» - это диаметр и должно быть уникальное значение, которое должно быть в 1-й сборщике, а во 2-м сборщике мне нужноУ меня есть ход, идентификатор и цена для этого соответствующего диаметра, например:
Я выбираю диаметр = 20, а во втором сборщике я получаю все удары из этого диаметра ((петля) dia ["20"] [i].Штрих <- вот как бы я это сделал в JavaScript ..). </p>
Вот моя модель, которую я получил отсюда https://app.quicktype.io/
public class Diameter : INotifyPropertyChanged
{
[JsonProperty("srednica")]
public string Srednica { get; set; }
[JsonProperty("silowniki")]
public List<Silowniki> Silowniki { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class Silowniki
{
[JsonProperty("stroke")]
public string Stroke { get; set; }
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("price")]
public string Price { get; set; }
}
Моя модель представления
public class ScannedViewModel : INotifyPropertyChanged
{
public ObservableCollection<Silowniki> Silowniki { get; set; }
public ObservableCollection<Diameter> Dia { get; set; }
public Diameter SelectedDiameter { get; set; }
public Diameter SelectedSilowniki { get; set; }
public ScannedViewModel()
{
Silowniki = new ObservableCollection<Silowniki>();
Dia = new ObservableCollection<Diameter>();
}
Мой ответ json здесь:
var responseText = streamReader.ReadToEnd();
if (response.StatusCode == HttpStatusCode.OK)
{
return responseText;
А вот как я добавляю json к диаметру, я сомневаюсь, что это правильный путь ..
ScannerPage.OnScanResult += (result) =>
{
ScannerPage.IsScanning = false;
Device.BeginInvokeOnMainThread(async () =>
{
await Navigation.PopAsync();
dynamic jsonRespone = await ConnectWithOauth.GetRequest(result.Text);
var test = JsonConvert.DeserializeObject<List<Diameter>>(jsonRespone);
ScannedProducts nextPage = new ScannedProducts(test);
//nextPage.BindingContext = viewModel;
Console.WriteLine("Mydia pomyslnie init");
await Navigation.PushAsync(nextPage);
И, наконец, вот мойxaml.
<Picker Title="Test"
x:Name="picker"
ItemDisplayBinding="{Binding Silowniki.Id}">
</Picker>
<Picker Title="test"
x:Name="kupa"
ItemDisplayBinding="{Binding Silowniki.Stroke}">
</Picker>
<ListView
x:Name="ListaProduktow"
CachingStrategy="RecycleElement"
RowHeight="60"
ItemSelected="OnItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ContentView>
<Label Text="{Binding Srednica}">
</Label>
</ContentView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Я привязываюсь к сборщику здесь на моей странице "ScannedProducts":
public ScannedProducts(dynamic test)
{
InitializeComponent();
picker.ItemsSource = test;
kupa.ItemsSource = test;
BindingContext = test;
Пожалуйста, помогитеЯ застрял в этом в течение последних 2 дней, и я действительно не знаю, что делать дальше ...
Отредактировал это сообщение 5.03
Что я хочудостигнуть: Получить "средницу" в 1 сборщике, и всякий раз, когда кто-то выбирает, например, "20", чтобы показать ему удар в сборщике 2-й соответствует этому "среднику" в json
Моя проблема: он показывает мне "средницу", но не показывает мне обводку и идентификатор. Я попытался с помощью средства выбора (закомментировав просмотр списка), но я получаю ошибку Java "Java.Lang.NullPointerException: попытка вызвать виртуальный метод 'Java.lang.String java.lang.Object.toString () '"
Я знаю, что JSON правильно десериализуется в модель, потому что я проверил, элементы есть, я думаю, я не знаю, какпокажите это в сборщике.
Скажите, что мне нужно сделать, чтобы сделать то, что я хочу достичь?
Редактировать:
Если я сделаю это в своем Page.cs:
kupa.ItemsSource = model[0].Silowniki;
И в моем xaml:
<Picker Title="test"
x:Name="kupa"
ItemDisplayBinding="{Binding Stroke}">
</Picker>
Это показывает мне удар, но только дляэлемент 0, который есть :) Как мне сделать это следующим образом: «Средство выбора 1: выбрать средника« 20 », если его выбранный ход показа из silowniki (модель [thisSrednicaIndex] .Silowniki.Stroke) для средства выбора 2«
Или я должен сделать это в цикле за кодом страницы?