- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我是 Android 开发的新手...来自 iPhone 和 .Net 背景。我见过与这个问题非常相似的问题,但没有一个涉及 SimpleCursorAdapter。
我有一个基本的 ListActivity,它使用 Cursor 将 SQLite 查询中的数据绑定(bind)到我的 ListView:
ListAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_list_item_1,
c,
new String[] {"name"},
new int[] {android.R.id.text1});
setListAdapter(adapter);
然后当一个项目被点击时:
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//Difference between this:
Cursor c = (cursor)l.getItemAtPosition(position);
//and this??
Cursor c = (Cursor)l.getAdapter().getItem(position);
int categoryId = c.getInt(0);
}
这是获取所选元素 id 的正确方法吗?这似乎很奇怪,因为我认为在数据库关闭后(即在我绑定(bind)之后)我不能使用我的光标。当我似乎无法找到从该 id 获取实际项目的方法时,传入的 id 有什么意义?另外,我不明白为什么 getItemAtPosition() 会返回一个游标......游标绑定(bind)到整个列表;不只是一排。最后,如果这是正确的,那么显示的两种获取光标的方式有区别吗?谢谢。
最佳答案
所以有几点:在获取光标后,您要调用 startManagingCursor
。这将游标的生命周期与 Activity 的生命周期联系起来(因此当 Activity 被销毁时,游标会被关闭/清理)。
startManagingCursor(c);
ListAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_list_item_1,
c,
new String[] {"name"},
new int[] {android.R.id.text1});
setListAdapter(adapter);
此外,数据库没有关闭,游标通常与数据库保持实时连接(因此 ListView 可以滚动并执行可能需要将来访问游标内容的那种性质的事情.
对于您的核心问题,在 onListItemClick
中执行此操作的最简单方法是:
Cursor c = ((SimpleCursorAdapter)l.getAdapter()).getCursor();
c.moveToPosition(position);
然后您可以使用 c.getLong(0)
来获取 id(假设您将 id 列作为第一列获取,这通常是这种情况)。但是,请注意 id 是作为签名的一部分传入的(请参阅 public void onListItemClick(ListView l, View v, int position, long id)
中的最后一个参数)所以你真的不需要再次获取它(但如果你想烧掉循环,你当然可以)。要访问其他列,您可以执行相同的操作,只需更改列索引即可。
希望对您有所帮助。
关于android - 从与 SimpleCursorAdapter 绑定(bind)的 ListView 中获取所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156836/
我已经在网上搜索了几天(实际上是几个晚上 ;),但目前我一直在为我的问题寻找解决方案。基本上我想要的是 SQLite 的 ListView ,带有过滤器和重要的事情:保持列表行结果与 SQLite 行
当我在 Droidio 中输入“SimpleCursorAdapter”时,对于应该添加哪个 SimpleCursorAdapter 类是矛盾的: 我也不知道 - 我应该使用哪一个作为在 ListVi
下面是让我悲伤的代码示例。如果我将 simpleCursorAdapter 放在 textchangedlistener 之外,但不在我不断收到消息中,则 simpleCursorAdapter 可以
我的每一行都有一个 ListView,我有一个 LinearLayout,其中包含一些对象(主要是一些 TextView)。 这个ListView我从光标动态填充它。在这个游标中,我有一个值 true
我正在尝试构建 android 应用程序,它似乎将 Force Close 保持在同一位置 (setListAdapter/SimpleCursorAdapter) 现在不管我做什么。这是 DBAda
我有一个关于 SimpleCursorAdapter 的恼人问题。我的程序有 ListView 和 ListActivity。每行都有自己的布局:
此代码通过显示数据库中的所有数据正常工作,但我在过滤时遇到问题。我尝试了很多代码但没有任何效果,有人可以帮助我吗?谢谢 package com.example.dictionary; imp
我想实现一个自定义的 SimpleCursorAdapter,它只在偶数行上显示背景颜色(在我的例子中是蓝色)。我的实现如下: public class ColoredCursorAdapter ex
我正在使用自定义的 SimpleCursorAdapter。目前,如果在数据库/游标中找不到任何条目,我的列表将保持为空。现在,如果光标/数据库中没有条目,我想在列表中显示一条消息。我该如何处理这个事
我一直在开发 Android 应用程序,我有一个问题 - ListView 使用 SimpleCursorAdapter(此游标从 SQLite 数据库获取信息),但如果我编辑我的数据库,ListVi
我试图在我的类中设置一个“SimpleCursorAdapter”对象变量,以便所有方法都可以访问它,所有这些都是非常标准的东西。目前,我在“OnCreate”方法中遇到错误,显示以下错误: 错误:
我想将一个字符串附加到我从数据库中提取到游标中的 ID。我有一个包含 2 个项目的 ListView,我希望文本写入 Id+"some text"。我使用 SimpleCursorAdapter 和
我有一个用 SimpleCursorAdapter 填充的 ListView。对于我列表中的每一项,我按以下顺序排列:TextView > RatingBar > TextView > ImageVi
我正在开发我的第一个 Android 应用程序,但不知道如何让我的 SimpleCursorAdpater 填充 View 。我传入的游标在其中产生了结果,因此问题一定出在实例化适配器或将其绑定(bi
我正在尝试使用自定义适配器访问列表 Activity 。我已经在不使用任何自定义适配器的情况下直接进行了尝试,它运行良好,但因为我想在 ListView 中添加更多功能,所以我想实现一个自定义适配器。
我正在尝试使用带有 ViewBinder 的 SimpleCursorAdapter 从数据库中获取图像并将其放入我的 ListView 项目 View .这是我的代码: private void s
我正在查看 Android 开发者网站上的记事本教程,发现 SimpleCursorAdaptor 已弃用。 新的构造函数 public SimpleCursorAdapter (Context co
我正在使用已弃用的 SimpleCursorAdapter 将数据从 Cursor 显示到 ListView。我添加了额外的参数 0,它删除了弃用的警告,但我想使用更好的方式来显示数据。我读过一些关于
所以我使用 SimpleCursorAdapter 将 SQLite 中的数据适配到 ListView 中。让我们称这个数据库为 testData。我在 testData 中的一列使用 0 或 1 记
我正在使用一个数据库,从中获取一个游标,然后使用一个 simplecursoradapter 来填充一个 ListView 。我似乎无法弄清楚为什么应用程序在创建新的 simplecursoradap
我是一名优秀的程序员,十分优秀!