android c#xamarin。如何在listview中显示关联表?

时间:2014-08-03 13:08:36

标签: c# android sqlite listview xamarin

我在Asset文件夹中有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];
...

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

最后我明白了。我改变了我的疑问:

 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;
     }

OnListItemClick我点击了比赛的“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);

    }

最后在第二项活动中,我得到了身份证明:

Passed_value = Intent.GetStringExtra("value"); 

非常感谢您的帮助。