首页 > 解决方案 > 如何将数据集的数据绑定到列表视图?

问题描述

我已经使用了来自 Web 服务的数据集,我想将数据字段绑定到列表视图中,但我不知道该怎么做,因为我只想从数据集中绑定一些字段而不是所有字段。list_adapter 中的布局是我想从数据集中绑定的数据。

这是我的数据集的 Web 方法。

public System.Data.DataSet RequestTxnReceipt(string strIdentity, string strDateFrom, string strDateTo, string strLocIp, string strDomain) {
        object[] results = this.Invoke("RequestTxnReceipt", new object[] {
                    strIdentity,
                    strDateFrom,
                    strDateTo,
                    strLocIp,
                    strDomain});
        return ((System.Data.DataSet)(results[0]));
    }    

数据列表.cs

DataSet ds = ws.RequestTxnReceipt(userName, "", "", "", "");

list_adapter.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llContainer"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/transNo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:text="#20190506170757987"

    android:background="#ff2196c8"
    android:textColor="#ffffffff" />
<ImageView
    android:src="@android:drawable/ic_menu_gallery"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
    android:id="@+id/imageView1"/>
<TextView
    android:text="Date :"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:id="@+id/date"
     />
<TextView
    android:text="Recipient :"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:id="@+id/recipient"
     />

<TextView
    android:id="@+id/currency"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"

    android:text="Currency :" />
<TextView
    android:text="Transaction :"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"

    android:id="@+id/transaction" />

<TextView
    android:text="Slip Verified :"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:id="@+id/slip" />

      <ImageButton
        android:id="@+id/btnCamera"
        android:src="@drawable/camera48"
        android:layout_width="80dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"/>

</LinearLayout>

标签: c#androidlistviewxamarin.androiddataset

解决方案


在你的 adapter.cs

添加属性和方法

public List<YourModel> dataSource;
public void AddData(List<YourModel> list)
{
  list.AddRange(list);
  NotifyDataSetChanged();
}

调用该方法并将数据集作为参数传递给适配器。

在方法中GetView

public override View GetView(int position, View convertView, ViewGroup parent)
{
    if (convertView == null)
     {
        convertView =LayoutInflater.From(parent.Context).Inflate(Resource.Layout.list_adapter, null);
     }

    YourModel model = dataSource[position] as YourModel;

     //for example , you want to set the text of textview
    TextView view = convertView.FindViewById<TextView >(Resource.Id.transNo);
    view.Text=model.xxx;             

    return convertView;

}

或者你可以参考https://proandroiddev.com/android-data-binding-listadapter-9e72ce50e8c7


推荐阅读