如何从IList Xamarin.Android c#填充列表视图?

如何从IList Xamarin.Android c#填充列表视图?,c#,listview,xamarin.android,C#,Listview,Xamarin.android,您能帮我从IList填写ListView(不同的列)(Xamarin.Android)吗? 我已将数据添加到IList-“readingList” 现在我正努力在“lv”中填充它。。我只是从Xamarin开始。Android为我辩护:P IList<Readings> readingList = new List<Readings>(); ListView lv; private void FillData() { lv = Fi

您能帮我从IList填写ListView(不同的列)(Xamarin.Android)吗?

我已将数据添加到IList-“readingList”

现在我正努力在“lv”中填充它。。我只是从Xamarin开始。Android为我辩护:P

    IList<Readings> readingList = new List<Readings>();
    ListView lv;

private void FillData()
    {
        lv = FindViewById<Android.Widget.ListView>(Resource.Id.gvLora);


        try
        {
            Cn.OpenConnection();
            NpgsqlCommand cmd = new NpgsqlCommand("SELECT encode(device_up.data::bytea,'base64') as Data,f_port, received_at,application_name, device_name FROM device_up", Cn.connection);
            NpgsqlDataReader myReader = cmd.ExecuteReader();

            while (myReader.Read())
            {
                Readings rd = new Readings();
                rd.Data = (string)myReader["Data"];
                rd.Received = (DateTime)myReader["received_at"];
                rd.MeterNumber = (string)myReader["device_name"];
                rd.Application = (string)myReader["application_name"];
                rd.Port = (int)myReader["f_port"];
                readingList.Add(rd);
            }
            Cn.CloseConnection();


        }
        catch { }
    } 

谢谢你的帮助

首先,请确保您能够正确地将数据获取到
IList readingList=new List(),我无法完全复制您的项目,因此我使用静态数据填充
列表视图

 public class MainActivity : AppCompatActivity
    {
        IList<Readings> readingList;
        ListView listView1;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
            listView1 = FindViewById<ListView>(Resource.Id.listView1);
            FillData();
            listView1.Adapter=new ReadingsAdapter(this, readingList);
            
        }

        private void FillData()
        {
            readingList = new List<Readings>();

            readingList.Add(new Readings { Data="test1", Received=DateTime.Now, Application= "Application1", MeterNumber="123", Port=8080 });
            readingList.Add(new Readings { Data = "test2", Received = DateTime.Now, Application = "Application2", MeterNumber = "1523", Port = 8081 });
            readingList.Add(new Readings { Data = "test3", Received = DateTime.Now, Application = "Application3", MeterNumber = "1223", Port = 8180 });
            readingList.Add(new Readings { Data = "test4", Received = DateTime.Now, Application = "Application4", MeterNumber = "1423", Port = 8080 });
            readingList.Add(new Readings { Data = "test5", Received = DateTime.Now, Application = "Application5", MeterNumber = "1623", Port = 8380 });
            readingList.Add(new Readings { Data = "test6", Received = DateTime.Now, Application = "Application6", MeterNumber = "1723", Port = 8480 });
        }
在baseAdapter中,应创建自定义项布局。下面是
list\u item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Data"
    />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Received"
    />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/MeterNumber"
    />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Application"
    />
<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Port"
    />
</LinearLayout>


下面是跑步截图

下面是一个关于如何在xamarin android中使用listview的详细文档


@Pawelp请不要忘记标记答案(单击✔ 在右上角),它将帮助其他有类似问题的人。对不起,我以为我已经回答了。是的,非常有用,谢谢!
    public class ReadingsAdapter : BaseAdapter<Readings>
    {
        MainActivity mcontext;
        IList<Readings> list;
        public ReadingsAdapter(MainActivity context, IList<Readings>  list)
        {
            this.mcontext = context;
            this.list = list;
        }
        public override Readings this[int position] => list[position];

        public override int Count => list.Count;

        public override long GetItemId(int position)
        {
            return position;
        }

        public override View GetView(int position, View convertView, ViewGroup parent)
        {

            View view = convertView;
            if (view == null) // no view to re-use, create new
                view  = mcontext.LayoutInflater.Inflate(Resource.Layout.list_item, null);
                view.FindViewById<TextView>(Resource.Id.Data).Text= list[position].Data;
                view.FindViewById<TextView>(Resource.Id.Received).Text = list[position].Received.ToString();
                view.FindViewById<TextView>(Resource.Id.MeterNumber).Text = list[position].MeterNumber.ToString();
                view.FindViewById<TextView>(Resource.Id.Application).Text = list[position].Application;
                view.FindViewById<TextView>(Resource.Id.Port).Text = list[position].Port.ToString();
            return view;
        }
    }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Data"
    />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Received"
    />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/MeterNumber"
    />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Application"
    />
<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:id="@+id/Port"
    />
</LinearLayout>