2017-06-27 2 views
-1

Je suis nouveau au xamarin.forms, et je veux construire une application multiplateforme qui affichera des données JSON dans la liste. C'est mes données JSON.Comment afficher les données JSON dans la vue en liste Xamarin.forms?

{ 
    "fish_product": [ 
    { 
     "fish_id": "1", 
     "fish_img": "", 
     "fish_name": "Indian Mackerel", 
     "fish_category": "Marine Fish", 
     "size": "Medium", 
     "price": "100" 
    }, 
    { 
     "fish_id": "2", 
     "fish_img": "", 
     "fish_name": "Manthal Repti", 
     "fish_category": "Marine Fish", 
     "size": "Small", 
     "price": "200" 
    }, 
    { 
     "fish_id": "4", 
     "fish_img": "", 
     "fish_name": "Baby Sole Fish", 
     "fish_category": "Marine Fish", 
     "size": "Small", 
     "price": "600" 
    } 
] 
} 

Je souhaite afficher "fish_name" en mode liste. S'il vous plaît suggérer une solution ou un article ou un tutoriel pour cela. Merci d'avance.

+0

Avez-vous obtenu la réponse de votre API avec succès? –

+0

Non monsieur.En fait ce type de données json nous devons montrer.Peut suggérer du code? @Alex Chengalan –

+0

Essayez ceci: https://developer.xamarin.com/guides/xamarin-forms/cloud-services/consuming/ reste/ –

Répondre

0

Je pense que vous devez désérialiser ce JSON à un objet comme

public class FishProduct 
{ 
    public string fish_id { get; set; } 
    public string fish_img { get; set; } 
    public string fish_name { get; set; } 
    public string fish_category { get; set; } 
    public string size { get; set; } 
    public string price { get; set; } 
} 

public class RootObject 
{ 
    public ObservableCollection<FishProduct> fish_product { get; set; } 
} 

Ensuite, vous devez utiliser un ListView où vous définissez votre listview.ItemsSource = myList.fish_product

Ensuite, vous devez créer un DataTemplate en utilisant ViewCell

Dans cette ViewCell, vous pouvez avoir une étiquette lorsque vous définissez SetBinding le nom du poisson. Dans le code quelque chose comme

Label label = new Label(); 
label.SetBinding(Label.TextProperty, "fish_name"); 

Je pense que vous pouvez jeter un oeil à ListView Documents

+0

Monsieur Pouvez-vous suggérer un appel asynchrone S'il vous plaît? @Alessandro Caliaro –

+0

appel asynchrone pour quoi? votre question est "comment afficher ..." vous n'avez pas besoin d'async. Vous avez besoin de fixations –

0

Je pense que cela peut vous aider à

votre modèle

public class FishProduct 
{ 
    public string fish_id { get; set; } 
    public string fish_img { get; set; } 
    public string fish_name { get; set; } 
    public string fish_category { get; set; } 
    public string size { get; set; } 
    public string price { get; set; } 
} 

public class RootObject 
{ 
    public List<FishProduct> fish_product { get; set; } 
} 

appel Webservice et JSON désérialisation

public async Task GetData() 
{ 
try 
    { 
    HttpClient client = new HttpClient(); 
    var result = await client.GetAsync("http://yourJSON_Url"); 
    result.EnsureSuccessStatusCode(); 
    string json = await result.Content.ReadAsStringAsync(); 
    List<FishProduct> res= JsonConvert.DeserializeObject<List<FishProduct>>(json); 

    } 
catch (Exception ex) 
{ 
    throw; 
    } 
}