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];
...
为什么不发送位置到另一个片段或活动,并在此活动中显示另一个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");
非常感谢您的帮助