【发布时间】:2023-03-19 04:55:01
【问题描述】:
我有一个包含两个活动的应用程序。在每个活动中,我都有一个 listView,其中包含一些内容。
在第一个活动中,我有一个“课程”列表视图。在第二个中,我有另一个 listView 的“Notes”。
我可以使用 SQLite 添加“课程”和“笔记”。当我点击“课程”时,它会打开 Notes Activity,它只显示为该 ID 创建的笔记(我使用 FK)。
假设我创建了一个名为 Maths 的“课程”。我单击它并创建一个注释“测试”。 如果我点击数学之后,我可以在其他活动中看到注释测试。
但是,假设我创建了一个名为法语的“课程”。如果我点击它,我会看到笔记测试,如果我点击数学,它会说我没有笔记。
这是因为我的 ListView 是由 ASC 订购的。我正在获取我的 ListView 位置的 ID。
一开始,Math 的 ID 为 1。但当我创建 French 时,Math 的 ID 为 2,French 的 ID 为 1。但在我的 Database SQlite 中,Math 的 ID 为 1,French 的 ID 为 2。
所以:当我点击第一个ListView的一个项目时,如何获取数据库的ID而不是listView上的位置ID?
这是我的第一个 ListView 的 ClickListener:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
long itemid= lv.getItemIdAtPosition(i);
int id= (int)itemid;
String a =lv.getItemAtPosition(i).toString();
Intent b = new Intent(AffichageCours.this,AffichageNotes.class);
Bundle args = new Bundle();
args.putString("nom_cours",a);
args.putInt("id",id);
b.putExtras(args);
startActivity(b);
}
});
}
在第二个活动中,我如何恢复价值观:
Intent intent = getIntent();
Bundle args = intent.getExtras();
int id = args.getInt("id");
String nom_cours = args.getString("nom_cours");
提前谢谢你!
【问题讨论】: