- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个由 SQLiteDB 提供的 ListView。在返回的每一行上,我都有一个可点击的 TextView,onClick 应该删除该行上的项目。所以我需要找到 sql rowid,这样我就可以调用 deleteItem(rowid)。
我已经尝试放入一个不可见的 TextView,我在填充 ListView 时用 sql rowid 填充它,它可以工作。但是我将内容 View 设置为 R.layout.list_view 并且不可见的 TextView 在 R.layout.list_item 中(每个项目行的自定义布局),所以我似乎无法访问它。
我该如何着手完成这项工作,或者有更好的方法吗?
这是填充 ListView 的代码:
private void fillData() {
// Get all of the notes from the database and create the item list
Cursor c = mDbHelper.fetchAllNotes();
startManagingCursor(c);
String[] from = new String[] { CommonDbAdapter.KEY_NOTES };
int[] to = new int[] { R.id.text1 };
// Now create an array adapter and set it to display using our row
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
setListAdapter(notes);
}
这是我当前的点击监听器,我不确定如何区分将项目返回到另一个 Activity 的项目点击和将删除项目的 TextView 点击。
itemList = (ListView) findViewById(android.R.id.list);
itemList.setTextFilterEnabled(true);
itemList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Intent intent = new Intent();
Bundle b = new Bundle();
b.putString("TEXT", ((TextView)v.findViewById(R.id.text1)).getText().toString());
intent.putExtras(b);
setResult(SUCCESS_RETURN_CODE, intent);
finish();
}
});
我最初试图获取 rowid 并在布局中使用简单的 onClick 集。但是在获取 rowid 时遇到了问题。
public void clickDelete(View view) {
mDbHelper.deleteNote(rowid);
}
最佳答案
这里有一个为你的 TextView 获取点击监听器的快速方法:
替换你的行:
SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
setListAdapter(notes);
用这个:
setListAdapter(new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
final TextView t = (TextView)v.findViewById(R.id.text1);
t.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Hello " + t.hashCode(), Toast.LENGTH_SHORT).show();
}
});
return v;
}
});
现在,您的 text1
View 将有一个 onclick 监听器,您可以做任何您想做的事情。不过,您需要将 rowId
存储在可从 onClick
方法内部访问的某个位置。
这并不能完全回答我猜想的问题,但它为 ListView 中的单个 View 提供了一个点击监听器。
你真的应该实现一个自定义的 CursorAdapter
类来做这样的事情,虽然你可以绕过并从某个地方检索 rowId
或者您可以改为使用不可见的 textview 并向其添加 onclick 监听器(如我上面所示),获取它的值(即 rowId),然后执行操作。
关于android - 如何在 ListView 中从 SQLiteDB 获取 RowID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148154/
我使用 sqlite 数据库作为用户设备中的本地存储。现在我们对数据库进行了一些更改,我想在用户的数据库中反射(reflect)出来。我该怎么做? 之前,我更新了 DBVersion 并 checki
我将 0.00 个十进制值作为文本存储在 SQLiteDB 中。我正在通过以下方式检索它们 "SELECT SUM(SUBSTR(amount, 1)) FROM record WHERE date
我有一个 SQLiteDB,在其中一个表中,有一列日期(格式为 3-1-2011)和一列数量。我想获取指定月份所有结果的数量。因此,如果我的表格如下所示: 1-28-2011 9 2-2-2011 2
我找不到我正在开发的应用程序的 sqlite db 文件在平板电脑(而不是模拟器)上运行。请任何人与我分享 android 在哪里保存应用程序的 db 文件。以及如何将其导出到计算机?最后,有没有任何
我关注了 sqlcipher tutorial 所有链接都编译得很好,构建得很好...... 现在轮到加密数据了,这应该是最简单的部分,我使用了 How to encrypt a plaintext
我想计算这些 fiddle with my DB and the query 中我称之为“差异”的值的上四分位数和下四分位数 我如何使用 SQLite 执行此操作? http://www.sqlite
我已经在现有数据库中创建了一个表(REPORTDATA)。我正在尝试将值插入到表中。但它没有插入。我正在使用以下代码。 dirPaths = NSSearchPathForDirectoriesInD
我编写了一个用于解析 SQLite 文件的程序,我可以解析 b 树页面中的所有数据以记录、列和值,但我需要解析表的模式,我发现了类似 的内容存储在第 1 页(根页)中的数据库模式 我可以用 Hex E
我尝试在 Sqllite Db 中插入一条记录并尝试在中查看该记录 DB Browser for SQLlite. Error : DB opened: soora.db no such table
我在我的应用程序中使用地址簿。我正在后台线程中获取通讯录数据。如果我从后台打开我的应用程序,我的应用程序会崩溃并出现以下错误: Application Specific Information
我有一个由 SQLiteDB 提供的 ListView。在返回的每一行上,我都有一个可点击的 TextView,onClick 应该删除该行上的项目。所以我需要找到 sql rowid,这样我就可以调
我有一个尝试创建数据库的 Android.App.Application。我正在使用 SQLite 数据库示例代码。如果我在 Activity 中使用它,效果会很好。当我尝试在我的 Android.A
在 MarkerDisplayActivity 内部我试图确认用户想要 要从行和数据库中删除所有列出的项目,你该怎么做?我 尝试了clear()和其他类型,行被删除,但如果我返回 然后再次转到 RV,
我正在创建一个完全专注于图像的应用程序。如果我继续添加图像,应用程序的大小会增加。我不知道应用程序的确切大小是多少,但我认为它可能会增加超过 20 MB。我不想要这样的 APK 文件大小,因为它是一个
我有一个用自定义密码创建的字符串,它可以有任何 char 值(0 到 0xFFFF)。该字符串是通过采用输入明文并将每个字符旋转一个伪随机值来创建的,因此我无法控制输出字符可能是什么。 我能否安全地将
嗨,我在连接到我的 sqlitedb 时遇到错误。 我使用 Firefox Sqlite 插件创建我的 sqlitedb。 MyConn:(网络配置)
我想检查 iOS 5 中引入的 iPhone 上的 MediaLibrary.sqlitedb 文件(并替换了早期 iOS4 的 library.itdb 和 location.itdb 文件)。它的
我是一名优秀的程序员,十分优秀!