Ich brauche etwas Hilfe bei der Weitergabe der ListView Tapped Id (die ich von einem JSON bekomme).Weitergabe von JSON-Objektdaten aus einem ListView SelectedItem
ich bevölkern Listenansicht mit einem API-Aufruf an einen Server:
private async void searchButton_Click(object sender, RoutedEventArgs e)
{
var textFrom = odTextBox.Text;
var textTo = doTextBox.Text;
var searchResult = await PrevoziApi.SearchRidesAsync(textFrom, textTo, datePicker.Date.UtcDateTime);
var array = searchResult.CarshareList
.OrderBy(cs => cs.Time)
.Select(cs => cs.Contact + " " + cs.Time)
.ToArray();
listView.ItemsSource = array;
}
Nun, wenn ich auf einen Artikel von Listview klicken, möchte ich auf eine andere Seite (CarShareDetailedPage) und machen einen weiteren Anruf zu der navigieren API, um detailliertere Daten zu diesem Objekt zu erhalten. Also muss ich die selectedItem ID von einer Seite an andere weitergeben. Wie mache ich das ?
ich auf eine andere Seite wie diese Navigation:
private void listView_Tapped(object sender, TappedRoutedEventArgs e)
{
Frame.Navigate(typeof(CarShareDetailedPage), listView.SelectedIndex);
}
Die OnNagiatedMethod auf dieser Seite lautet:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var value = e.ToString();
carShareTextBox.Text = value;
}
Und meine Json-Klasse ist:
public class CarshareList
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("from_id")]
public string FromId { get; set; }
[JsonProperty("from_country")]
public string FromCountry { get; set; }
[JsonProperty("from_country_name")]
public string FromCountryName { get; set; }
[JsonProperty("to_id")]
public string ToId { get; set; }
[JsonProperty("to")]
public string To { get; set; }
[JsonProperty("to_country")]
public string ToCountry { get; set; }
[JsonProperty("to_country_name")]
public string ToCountryName { get; set; }
[JsonProperty("time")]
public string Time { get; set; }
[JsonProperty("date_iso8601")]
public DateTime DateIso8601 { get; set; }
[JsonProperty("added")]
public DateTime Added { get; set; }
[JsonProperty("price")]
public double? Price { get; set; }
[JsonProperty("num_people")]
public double NumPeople { get; set; }
[JsonProperty("author")]
public string Author { get; set; }
[JsonProperty("is_author")]
public string IsAuthor { get; set; }
[JsonProperty("comment")]
public string Comment { get; set; }
[JsonProperty("contact")]
public string Contact { get; set; }
[JsonProperty("date")]
public string Date { get; set; }
[JsonProperty("full")]
public string Full { get; set; }
[JsonProperty("insured")]
public string Insured { get; set; }
[JsonProperty("share_type")]
public string ShareType { get; set; }
[JsonProperty("confirmed_contact")]
public string ConfirmedContact { get; set; }
[JsonProperty("bookmark")]
public object Bookmark { get; set; }
[JsonProperty("from")]
public string From { get; set; }
}
public class CarshareResponse
{
[JsonProperty("search_type")]
public string SearchType { get; set; }
[JsonProperty("carshare_list")]
public IList<CarshareList> CarshareList { get; set; }
}
Lassen Sie mich Sag, das ist das erste Mal überhaupt, dass ich mit Apis und Json arbeite. Danke für Ihre Hilfe!
EDIT: Ich habe den Code für die API unten hinzugefügt, so dass dies jetzt der gesamte Code sein sollte, den ich habe.
public class PrevoziApi
{ public static async Task<CarshareResponse> SearchRidesAsync(
string fromCity,
string toCity,
DateTime date,
string type = "shares",
CancellationToken token = default(CancellationToken))
{
using (var client = new RestClient("https://prevoz.org/api/"))
{
var request = new RestRequest("search/" + type + "/", HttpMethod.Get);
request.AddQueryParameter("f", fromCity);
request.AddQueryParameter("fc", "SI");
request.AddQueryParameter("t", toCity);
request.AddQueryParameter("tc", "SI");
request.AddQueryParameter("d", date.ToString("yyyy-MM-dd"));
request.AddQueryParameter("exact", "true");
return
(await client.Execute<CarshareResponse>(request, token)).Data;
}
}
}
Wie Sie gesagt haben, ID ist einzigartig für jedes Element in der CarshareList, und mit dieser ID kann ich mehr Daten ohne ein Problem ziehen. Ich habe listView.SelectedIndex nur als Beispiel, ich weiß, das ist nutzlos, aber listView.SelectedItem.Id funktioniert nicht. @daniel – Skynet
listview.SelectedItems [0] .Id Funktioniert das? @Skynet – Daniel
Nein, ich kann keine ID nach "." Intellisense schlägt mir nur Equals, GetHashCode, GetType und ToString @daniel vor – Skynet