【问题标题】:getID from database of the Item clicked of a listView从列表视图中单击的项目的数据库中获取 ID
【发布时间】: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");

提前谢谢你!

【问题讨论】:

    标签: android sqlite listview


    【解决方案1】:

    onItemClick 中的 long 值应该是 id 如果您使用游标并且您的列的 id 列是 _id

    【讨论】:

    • 我该如何解决呢?我的意思是,如何使用光标?
    猜你喜欢
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多