2016-03-25 27 views
0

Bir listeye verilen yanıttan json verilerini bağlıyorum.bağlama json dizi yanıtı listesindeki liste sırasına göre xamarin android

Tepki

[{ 
    "DDLValue":"home", 
    "ID":2, 
    "Msg":"Enough", 
    "Status":2 
} 
    { 
    "DDLValue":"palace", 
    "ID":1, 
    "Msg":"good", 
    "Status":2 
}] 

Ben ListView yukarıdaki json tepkisini bağlamak mümkün değilim, ama kelime "seçeneğini" ve takip eden tüm satırları yanıtı içeren bir ilk satırı istiyorum.

Mainactivity.cs

tableItems = new List<TableItem>(); 
var client = new RestClient("http://websites.net/"); 
var request = new RestRequest("Service/GetRegions", Method.POST); 
request.RequestFormat = DataFormat.Json; 
tableItems = client.Execute<List<TableItem>>(request).Data; 

listView.Adapter = new HomeScreenAdapter(this, tableItems); 
    protected void OnListItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e) 
    { 
        string val; 
     if (e.Position==0) 
     { 
      region.Text = -select-; 
     } 
     else { 


     var t1 = tableItems[e.Position-1]; 
      val = t1.DDLValue; 
      region.Text = val; 
     }} 

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+1; } 
    } 
    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.DDLValue; 

     return view; 
    } 
} 

nasıl fazladan İlk satırı ekleyebilirim? i belli listrow tıkladığımda ilk satır seçme seçeneği olarak görünmektedir, ancak liste görünümü olarak

cevap

0
public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     TableItem item; 

     if (position == 0 { 
      item = new TableItem { DDLValue = "Select" }; 
     } else { 
      item = items[position - 1]; 
     } 

     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.DDLValue; 

     return view; 
    } 
+0

, bu seçim sırasında tıklandığında o bağın arrayout verir sonraki satırda, (i sonraki satırın yani detaylar) ve TableItem nesne sağlar istisna. – dafodil

+0

Listenizde etkinlik işleyicisini tıklatın, listenin başında "boş" öğeyi hesaplamak için dizini değiştirmeniz gerekir. – Jason

+0

Teşekkürler Jason.I koşulu ve sıfır pozisyonu kontrol ettim.Yalnızca güncellenmiş yanıtımı gör. Ve eğer doğru bir kontrol yolu değilse lütfen beni düzeltin. Durumunda – dafodil

İlgili konular