Xamarin Android开发控件之ListView展示数据
1、//获取引用接口
ItemInfos.ItemInfos itemInfo = new ItemInfos.ItemInfos();
//需要展示出来的数据集 我显示Name字段的
private List<Item> datas;
//即将填充到的 ListView
ListView listView;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Layouts);
//获取页面上的ListView
listView = FindViewById<ListView>(Resource.Id.list);
//获取接口数据返回Json格式
string item = itemInfo.GetItemInfo("1",UserInfo.GetUserInfo().WorkerId, UserInfo.GetUserInfo().ObjectType);
//将Json转换成数据集
datas = JsonConvert.DeserializeObject<List<Item>>(item);
//ListView 绑定自定义模版数据
listView.Adapter = new ItemListAdapter(this, datas);
//ListView 点击事件
listView.ItemClick += listView_ItemClick;
}
void listView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
Toast.MakeText(this, "你选择了 " + datas[e.Position].Name, ToastLength.Short).Show();
}
2、//自定义模版类
class ItemListAdapter : BaseAdapter<Item>
{
/// <summary>
/// 所有Item 的数据
/// </summary>
List<Item> items;
Activity context;
//构造函数
public ItemListAdapter(Activity context, List<Item> items)
: base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override Item this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
/// <summary>
/// 会循环执行这个方法
/// </summary>
/// <param name="position"></param>
/// <param name="convertView"></param>
/// <param name="parent"></param>
/// <returns></returns>
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
var view = convertView;
if (view == null)
{
//使用自订Layout
view = context.LayoutInflater.Inflate(Resource.Layout.ItemList,null);
}
view.FindViewById<TextView>(Resource.Id.tvName).Text = item.Name;//显示绑定的字段
return view;
}
}
3、------------------------------------------模版布局-------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/list" />
</LinearLayout>
4、------------------------------页面布局------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/linearContainer"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip">
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#CDFFE7"
android:textSize="20dip"
android:textStyle="italic"
android:text="User's Name" />
</LinearLayout>
</LinearLayout>