我在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];
...
终于我明白了。我更改了查询:
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);
}
最后,在第二个活动中,我获得了ID:
Passed_value = Intent.GetStringExtra("value");
非常感谢您的帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句