2016-03-24 6 views
0

JSON配列のレスポンスをlistviewにバインドしようとしていますが、私のactivity.csクラスに何らかのエラーが発生しています。私はアンドロイドの初心者です。Json Arrayをxamarinのリストビューにバインド中にエラーが発生しました。android

WCFサービスの応答

[{ 
    "Region":"String content", 
    "ID":21, 
    "Msg":"String content", 
    "Status":214 
}] 

regionModel.cs

public class regionModel 
    { 

     public int ID { get; set; } 
     public string Region { get; set; } 
     public string Msg { get; set; } 
     public int Status { get; set; } 

    } 

Activity.cs

List<regionTable> regionItems = new List<regionTable>(); 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 

      SetContentView(Resource.Layout.HomeScreen); 
      listView = FindViewById<ListView>(Resource.Id.List); 


        var client = new RestClient("http://azurewebsites.net/"); 
      var request = new RestRequest("RegionService/GetRegions", Method.POST); 
      request.RequestFormat = DataFormat.Json; 
      regionItems = client.Execute<List<regionTable>>(request).Data; 


      JSONArray JA = new JSONArray(regionItems); 

     for (int i = 0; i < JA.Length(); i++) 
     { 
      try 
      { 
       JSONObject jsonObject = JA.GetJSONObject(i); 
       regionItems.Add(jsonObject.GetString("ID"));  
      } 
      catch (JSONException e) 
      { 
       // e.printStackTrace(); 
      } 
     } 


      listView.Adapter = new HomeScreenAdapter(this,regionItems); 

HomeScreenAdapter。 CS

public class HomeScreenAdapter : BaseAdapter<TableItem> { 
    List<TableItem> items; 
    Activity context; 
    public HomeScreenAdapter(Activity context, List<TableItem> items) 
     : base() 
    { 
     this.context = context; 
     this.items = items; 
    } 
    public override long GetItemId(int position) 
    { 
     return position; 
    } 
    public override TableItem this[int position] 
    { 
     get { return items[position]; } 
    } 
    public override int Count 
    { 
     get { return items.Count; } 
    } 
    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     var item = items[position]; 

     View view = convertView; 
     if (view == null) // no view to re-use, create new 
      view = context.LayoutInflater.Inflate(Resource.Layout.CustomView, null); 
     view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Region; 

     return view; 
    } 
    } 
} 
+0

「何らかのエラーが発生しています」 - エラーの原因を正確に教えてくれれば本当に便利です。 – Jason

+0

@Jason jsonobjectとlenghtに定義が含まれていないことを示す赤いマークのエラーが表示されます。 – dafodil

+0

どこ?どの特定の線? *特定の*エラーメッセージは何ですか? – Jason

答えて

0

ドキュメントをお読みください:JSONArray.Length()(ノートキャピタル・ "L")とJSONArray.GetJSONObject()(資本金 "G")とJSONObject.GetString()(資本金 "G")。

Xamarinは、Androidで使用されるJavaの規約ではなく、C#命名規則に従う傾向があります。

+0

命名対流は修正されましたが、このregionItems.Add(jsonObject.GetString( "ID"));エラー "文字列をregionModelに変換できません"というエラーが表示されます。 – dafodil

+0

@dafodilとJSONArray JA =新しいJSONArray(regionItems);私はnull値を取得しています。ここで私はnewton.jsonとrestsharpライブラリを使用しています。 – dafodil

+0

1. regionItemsはregionModelのリストですが、単一の文字列(ID)を追加しようとしていますが、これは機能しません。 jsonオブジェクト全体をdeserializeしてregionModelにし、それをリストに追加する必要があります。 – Jason

関連する問題