展示
目录
样式
- Resources/drawable/blue_icon.xml
-
- Resources/drawable/green_icon.xml
-
- Resources/drawable/btn_bg.xml
-
- Resources/drawable/item_bg.xml
-
根布局 Resources/layout/main.xml
主布局 Resources/layout/content.xml
scrollbars 去掉滚动条
overScrollMode 去掉上下滚动阴影
divider 分割线颜色
dividerHeight 分割线高度
单条布局 Resources/layout/list_item.xml
行程类 scripts/TripInfo.cs
namespace android_by_csharp.scripts
{
public class TripInfo
{
public readonly string StartCity;
public readonly string EndCity;
public readonly string Time;
public readonly string StartAddress;
public readonly string EndAddress;
public readonly float Price;
public readonly string Name;
public readonly string Distance;
public TripInfo(string startCity, string endCity, string time, string startAddress, string endAddress, float price, string name, string distance)
{
StartCity = startCity;
EndCity = endCity;
Time = time;
StartAddress = startAddress;
EndAddress = endAddress;
Price = price;
Name = name;
Distance = distance;
}
}
}
行程Adapter scripts/TripInfoAdapter.cs
using System;
using System.Collections.Generic;
using Android.Content;
using Android.Views;
using Android.Widget;
using Object = Java.Lang.Object;
namespace android_by_csharp.scripts
{
public class TripInfoAdapter : baseAdapter
{
private readonly List _tripInfos;
private readonly LayoutInflater _context;
public TripInfoAdapter(Context context, List tripInfos)
{
_tripInfos = tripInfos;
_context = LayoutInflater.From(context);
}
public override Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
convertView = _context.Inflate(Resource.Layout.list_item, parent, false);
var startCity = (TextView)convertView?.FindViewById(Resource.Id.start_city);
if (startCity != null) startCity.Text = _tripInfos[position].StartCity;
var endCity = (TextView)convertView?.FindViewById(Resource.Id.end_city);
if (endCity != null) endCity.Text = _tripInfos[position].EndCity;
var time = (TextView)convertView?.FindViewById(Resource.Id.time);
if (time != null) time.Text = _tripInfos[position].Time;
var startAddress = (TextView)convertView?.FindViewById(Resource.Id.start_address);
if (startAddress != null) startAddress.Text = _tripInfos[position].StartAddress;
var endAddress = (TextView)convertView?.FindViewById(Resource.Id.end_address);
if (endAddress != null) endAddress.Text = _tripInfos[position].EndAddress;
var price = (TextView)convertView?.FindViewById(Resource.Id.price);
if (price != null) price.Text = _tripInfos[position].Price.ToString();
var name = (TextView)convertView?.FindViewById(Resource.Id.name);
if (name != null) name.Text = _tripInfos[position].Name;
var distance = (TextView)convertView?.FindViewById(Resource.Id.distance);
if (distance != null) distance.Text = _tripInfos[position].Distance;
var goBtn = (Button)convertView?.FindViewById(Resource.Id.go_btn);
if (goBtn != null)
goBtn.Click += (sender, args) =>
{
var data = _tripInfos[position];
Console.WriteLine(data);
};
return convertView;
}
public override int Count => _tripInfos.Count;
}
}
MainActivity.cs
using System.Collections.Generic;
using android_by_csharp.scripts;
using Android.App;
using Android.OS;
using Android.Widget;
namespace android_by_csharp
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.main);
var listView = (ListView)FindViewById(Resource.Id.list_view);
var list = new List
{
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"),
new TripInfo("宝坻", "天津", "2020-02-02 下午", "宝坻区", "天津市", 12.5f, "ProsperLee", "42.123km")
};
var tripInfoAdapter = new TripInfoAdapter(this, list);
if (listView != null) listView.Adapter = tripInfoAdapter;
}
}
}
新增数据
// scripts/TripInfoAdapter.cs
public void Add(TripInfo tripInfo)
{
_tripInfos.Add(tripInfo);
NotifyDataSetChanged(); // 刷新
}
// MainActivity.cs
var addBtn = (Button)FindViewById(Resource.Id.add_btn);
addBtn.Click += (sender, args) =>
{
tripInfoAdapter.Add(new TripInfo("天津", "北京", "2020-01-01 上午", "天津市南开区", "北京故宫", 100f, "张三", "80km"));
};