У меня проблема. Я создал GridView с пользовательским адаптером. GridView выглядит так:
Как видите, имена столбцов не совпадают с самим столбцом, поскольку имена столбцов являются текстовыми представлениями. Поэтому я хочу сделать что-то вроде: когда заполнение сетки будет выполнено и в первой строке вы сначала напечатаете имена столбцов. В результате я хочу это:
И когда это будет сделано, я хочу настроить ширину столбца для всего столбца на самое длинное значение, которое. Поэтому, когда у меня есть только Buy и Sell, я хочу, чтобы столбец Action покупал столько же, сколько и имя Action, потому что это самое длинное значение. Но когда придет значение Withdrawal, оно будет таким же длинным, как и это имя. Вот самый важный код моего GridViewAdapter:
public class OrderListAdapter : BaseAdapter<order>
{
public List<order> mItems;
private Context mContext;
public OrderListAdapter(Context context, List<order> items)
{
mItems = items;
mContext = context;
}
public override int Count
{
get { return mItems.Count; }
}
public void refresh(List<order> mItems)
{
this.mItems = mItems;
NotifyDataSetChanged();
}
public override long GetItemId(int position)
{
return position;
}
public override order this[int position]
{
get { return mItems[position]; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null)
{
row = LayoutInflater.From(mContext).Inflate(Resource.Layout.orderlist_row, null, false);
var txtOrderAction = row.FindViewById<TextView>(Resource.Id.txtOrderAction);
var txtOrderCoin = row.FindViewById<TextView>(Resource.Id.txtOrderCoin);
var txtOrderQuantity = row.FindViewById<TextView>(Resource.Id.txtOrderQuantity);
var txtOrderPrice = row.FindViewById<TextView>(Resource.Id.txtOrderPrice);
var txtOrderStatus = row.FindViewById<TextView>(Resource.Id.txtOrderStatus);
var txtOrderProfit = row.FindViewById<TextView>(Resource.Id.txtOrderProfit);
var LayoutProfit = row.FindViewById<LinearLayout>(Resource.Id.LayoutProfit);
row.Tag = new OrderViewHolder() {
txtOrderAction = txtOrderAction,
txtOrderCoin = txtOrderCoin,
txtOrderQuantity = txtOrderQuantity,
txtOrderPrice = txtOrderPrice,
txtOrderStatus = txtOrderStatus,
txtOrderProfit = txtOrderProfit,
LayoutProfit = LayoutProfit };
}
var holder = (OrderViewHolder)row.Tag;
return row;
}
}
С Order.cs:
public class order
{
public int Id { get; set; }
public int AgentId { get; set; }
public string Action { get; set; }
public string Market { get; set; }
public string Coin { get; set; }
public decimal Quantity { get; set; }
public decimal Amount { get; set; }
public decimal LimitValue { get; set; }
public decimal TriggerValue { get; set; }
public decimal Price { get; set; }
public decimal Trans_Quantity { get; set; }
public decimal Trans_Amount { get; set; }
public decimal Trans_Price { get; set; }
public decimal Trans_Fee_Coin { get; set; }
public decimal Trans_Fee_USDT { get; set; }
public decimal Trans_USDT { get; set; }
public string Status { get; set; }
public string State { get; set; }
public DateTime DateTimeEntered { get; set; }
public DateTime DateTimePlanned { get; set; }
public DateTime DateTimeExecuted { get; set; }
public string Remark { get; set; }
public string Strategy { get; set; }
public decimal ProfitUSDT { get; set; }
public decimal ProfitPerc { get; set; }
}