将json数组响应绑定到xamarin android中listview中的列表行 [英] binding json array response to row of list in listview in xamarin android

查看:22
本文介绍了将json数组响应绑定到xamarin android中listview中的列表行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将响应中的 json 数据绑定到列表.

I am binding json data from a response to a list.

回复

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

我可以将上述 json 响应绑定到 ListView,但我想要包含单词select"的第一行和响应的所有后续行.

I'm able to bind the above json response to a ListView, but I want a first row that contains the word "select" and all following rows the response.

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;
    }
}

如何添加额外的第一行?

How can I add an extra first row?

推荐答案

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;
    }

这篇关于将json数组响应绑定到xamarin android中listview中的列表行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆