Android c# xamarin.如何在列表视图中显示关联的表

本文关键字:显示 关联 视图 列表 xamarin Android | 更新日期: 2023-09-27 18:16:22

我在资产文件夹中有sqlite数据库。我在列表视图中显示了其中一个表(下面的代码),但是在单击列表视图中的行之后,我在显示与第一个表相关的另一个表时遇到了问题。也就是说,表格有关于比赛的数据,每个比赛都有一个与赛程数量相关的表格。单击比赛行后,我喜欢显示与此比赛相关的装置。我该怎么做呢?谢谢大家

using (var contents = con.CreateCommand())
               {
                   contents.CommandText = "SELECT * from Competition";
                   var r = contents.ExecuteReader();
                   while (r.Read())
                       items.Add(string.Format("'n't{0}", r["name"].ToString()));

                   con.Close();
                   ListAdapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, items);
               }}
            protected override void OnListItemClick(ListView l, View v, int position, long id)
                    {
                       var t = items[position];
...

Android c# xamarin.如何在列表视图中显示关联的表

为什么不发送位置到另一个片段或活动,并在此活动中显示另一个listadapter?

我终于明白了。我更改了我的查询:

 using (var contents = con.CreateCommand())
        {
            contents.CommandText = "SELECT [_id], [name], [shortName],[defaultCompetitionRule_id] from [Competition]";
            var r = contents.ExecuteReader();
            while (r.Read())
            {
                tl.Add(FromReader(r));
            }
            con.Close();
            ListAdapter = new ArrayAdapter<String>(this,  Android.Resource.Layout.SimpleListItem1, tl.Select(x => x.name).ToArray());
        }

我FromReader ():

Competition FromReader(SqliteDataReader r)
    {
        var t = new Competition();
        t._id = Convert.ToInt32(r["_id"]);
        t.name = r["name"].ToString();
        t.shortName = r["shortName"].ToString();
        t.defaultCompetitionRule_id = Convert.ToInt32(r["defaultCompetitionRule_id"]);
        return t;
     }

onlisttitemclick我得到了被点击的竞争的"id",并将其发送到下一个活动:

 protected override void OnListItemClick(ListView l, View v, int position, long id)
    {
        var ids = tl.Select(x => x._id).ToArray();
        var t = ids[position];
        var activity2 = new Intent(this, typeof(SelectFixture));
        activity2.PutExtra("value", t.ToString());
        StartActivity(activity2);
    }

最后在第二个活动中,我得到了id:

Passed_value = Intent.GetStringExtra("value"); 

非常感谢您的帮助