这可能是一个noob问题,但我对所有这些SQLite-Database-Cursor-Adapter-ListView-Do-It-Properly-Stuff都很新.
是)我有的:
在我,MainActivity我有一个ListView.我使用an SQLite database并使用ListView自定义适配器扩展填充SimpleCursorAdapter.点击ActionBar我激活的项目Contextual Action Mode.到目前为止一切正常.
我想要的是:
通过单击我ListView item的相应数据库中的某个图标,应删除该行,并ListView应刷新.
我的问题:
如何刷新我Cursor和我的ListView正确?当我不使用cursor.requery()我OnClickListener而使用时,cursor = dbm.getIOIOSensorsCursor()我会在CursorIndexOutOfBoundsException该行下方输入几行
int state = cursor.getInt(cursor.getColumnIndex(IOIOSensorSchema.STATE));
Run Code Online (Sandbox Code Playgroud)
我的应用程序崩溃,但重新加载后,数据库已被删除,相应ListView item的消失.
我想崩溃必须与_positionget getView方法有关,因为_position是final.但是,当我使用cursor.requery()一切正常的时候.
但是这种方法已被弃用,它的文档说"不要使用它......".我是正确编码的朋友(我还是一个初学者,想要学习正确的编码而不是快速和肮脏),并想知道如何正确编码.我不知道它是否重要,但我只在我的(非常快)Nexus 4上测试我的应用程序.刷新Cursor速度似乎没有问题,但我想知道它是否适用于速度较慢的设备.如果它对您很重要,我的数据库将包含大约10-20行,大约12列.我想这是一个非常小的数据库.
这是我的自定义适配器的相关代码:
public class IOIOSensorCursorAdapterCam extends SimpleCursorAdapter
{
static class ViewHolder
{
ImageView …Run Code Online (Sandbox Code Playgroud) 我想使用光标和列表视图显示我的表.但我得到了错误.
Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
Run Code Online (Sandbox Code Playgroud)
但我没有在我的申请中声明_id.有人能帮助我吗?
这是我在dbHelper中的代码.
public Cursor DataPesanKeluar() {
Cursor c = dba.rawQuery(
" SELECT "
+ kel_id + ","
+ e_chiperteks + ","
+ k_nama + ","
+ kel_waktu +
" FROM " + tbPesan + " INNER JOIN " + tbPesanKeluar +
" ON " + tbPesan + "." + p_idpesan + "=" + tbPesanKeluar + "." + kel_idpesan +
" INNER JOIN " + tbEnkrip +
" ON " + tbPesan …Run Code Online (Sandbox Code Playgroud)