2016-12-14 3 views
0

Ich habe eine Liste von Anforderungen und jede Anforderung hat Eigenschaften, die ich aus einem JSON extrahieren und im Moment glaube ich, dass nur die Eigenschaften typeName und requisiteStatusId von JSON interessiert sind. Diese beiden sind die Eigenschaften der Bilder, die diesem Anforderungstyp (Prüfung, Artikel lesen usw.) und seinem aktuellen Status entsprechen.Wie kann ich Bilder in meiner Listenansicht anzeigen?

kann ich zeigen schon Bilder in der Listenansicht, aber ich habe die Bilder zu zeigen, die der Typname und requisiteStatusId entsprechen, zum Beispiel

{ 
    "id": 1221, 
    "name": "Visibility - Public Acknowledgement", 
    "description": "Acknowledgement from Omar during a Q Meeting", 
    "typeId": 11, 
    **"typeName": "Proven XP",** 
    "validationId": null, 
    "skillId": 131, 
    "skillName": "Visibility", 
    "material": "No Material", 
    "materialUrl": "#", 
    **"requisiteStatusId": 4,** 
    "trailName": "General Knowledge", 
    "trailId": 5, 
    "levelId": 1  
}, 

Abhängig von diesen beiden Sie die entsprechenden Bilder zeigen, gibt es drei Zustände und 10 Arten, denn nun die Bilder direkt auf diese Weise bin ich zeige, zum Beispiel:

public class CustomVeggieCell : ViewCell 
{ 
    public CustomVeggieCell() 
    { 
     var image = new Image 
     { 

     }; 
     var image2 = new Image 
     { 
     }; 
     var nameLabel = new Label 
     { 

      VerticalTextAlignment = TextAlignment.Center, 
      TextColor = Color.FromHex("#FF9E9E9E"), 
     }; 

     var horizontalLayout = new StackLayout() 
     { 

     }; 
     //set bindings 

     nameLabel.SetBinding(Label.TextProperty, "Name", BindingMode.TwoWay); 


     image.Source = "book.png"; 
     image2.Source = "Palomitashida.png"; 
     //Set properties for desired design 
     horizontalLayout.Orientation = StackOrientation.Horizontal; 

     image2.HorizontalOptions = LayoutOptions.EndAndExpand; 
     nameLabel.HorizontalOptions = LayoutOptions.StartAndExpand; 
     nameLabel.VerticalOptions = LayoutOptions.Center; 
     nameLabel.TextColor = Color.FromHex("#FF9E9E9E"); 
     //add views to the view hierarchy 
     horizontalLayout.Children.Add(image); 
     horizontalLayout.Children.Add(nameLabel); 
     horizontalLayout.Children.Add(image2); 

     View = horizontalLayout; 


    } 
} 

ich weiß nicht, wie die Eigenschaft aus dem json zu extrahieren oder wie zu validieren es so, dass die ID verwenden zu extrahieren aus der json mir sagen, welche Art und Zustand der Anforderung ist, lasse ich sie Bilder, so dass es enter image description here

+0

Also wollten Sie die Werte aus JSON oder ListView.SmallImageList und LargeImageList extrahieren? –

+0

@MohitShrivastava Ich möchte extrahieren, "typeName" und "requisiteStatusId", weil ich Bilder anzeigen muss, nach Eigenschaften, nun muss ich wissen, wie Bilder zeigen, abhängig von der JSON –

Antwort

0

Verwenden NewtonSoft JSON von Nuget von here ein wenig mehr in Zusammenhang sein kann. Sie können dieses NuGet-Paket über Visual Studio zu Ihrem Projekt hinzufügen, indem Sie im Solution Explorer> NuGet-Pakete verwalten mit der rechten Maustaste auf Ihr Projekt klicken. Hier

ist eine Klasse, die ich für Sie Anforderung erstellt:

public class Requirement 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string description { get; set; } 
    public int typeId { get; set; } 
    public string typeName { get; set; } 
    public object validationId { get; set; } 
    public int skillId { get; set; } 
    public string skillName { get; set; } 
    public string material { get; set; } 
    public string materialUrl { get; set; } 
    public int requisiteStatusId { get; set; } 
    public string trailName { get; set; } 
    public int trailId { get; set; } 
    public int levelId { get; set; } 
} 

Sie den Code unten verwenden, um die JSON wie dies mit NewtonSoft deserialisieren:

var item = JsonConvert.DeserializeObject<Requirement>("JSON String goes here"); 

Dies wird mit einem Bedarf aufwenden . Sie werden wahrscheinlich ein Array von JSON-Objekten oder eine andere Struktur haben, um den Code entsprechend Ihrer Struktur zu optimieren.

Sie können jetzt item deserialized oben verwenden, um Werte von ihm zu lesen.

Für einen schnellen Test, wenn Sie Ihre JSON (ohne das letzte Komma und die **, die Sie hinzugefügt haben) in eine Textdatei und legen Sie die Textdatei in Ihrem bin/debug Ordner, dann können Sie den JSON erhalten deserialisiert wie folgt:

var item = JsonConvert.DeserializeObject<Requirement>(File.ReadAllText("Json.txt")); 
+0

ich nicht unbedingt deserialize, kann ich die JSON in lokalen Variablen extrahieren Beispiel: UserPathContract _userPathContract = new UserPathContract(); _userPathContract = Application.Current.Properties ["UserTrail"] als UserPathContract; var Requisiten = _userPathContract.Requisites .Where (r => r.TrailId == _currentTrail.Id && r.LevelId == _currentLevel.Id && r.SkillId == skill.Id && r.RequisiteStatusId == _currentRequisiteStatus. Ich würde); –

+0

es dient mir für die Validierung in Picker geändert Valor, ich möchte wissen, wie extrahieren Eigenschaften für die Validierung der erforderlichen und zeigen Bilder entsprechende –

+0

gut können Sie die Eigenschaft aus dem deserialized JSON extrahieren und dann verwenden Sie die Eigenschaft für das richtige Bild zu zeigen. Wenn ich Ihre Frage richtig verstanden habe, wird der JSON einen Wert haben, den Sie verwenden möchten. – CodingYoshi

Verwandte Themen