首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite似乎没有在Android RecyclerView中与onCheckedChanged一起执行。

SQLite似乎没有在Android RecyclerView中与onCheckedChanged一起执行。
EN

Stack Overflow用户
提问于 2019-01-01 00:32:27
回答 1查看 184关注 0票数 0

我有一个由RecyclerView膨胀的列表,该列表是由SQLite数据库提取的。我使用一个onCheckedChanged来操作数据。

如果单击CheckBox,则调用setItem()方法。

代码语言:javascript
复制
private void setItem(int position, boolean checked) {        
    // update entries in sqLiteDatabase at click position

    // set the database-cursor to current entry
    cursor.moveToPosition(position);

    // convert boolean to integer, because SQLite does not support boolean values
    int iSelected = checked ? 1 : 0;

    // create SQL-query-string
    String SQLQuery = "" +
            "UPDATE country " +
            "SET selected=" + iSelected +
            " WHERE id='" + cursor.getString(cursor.getColumnIndex("id")) + "'";

    // execute the query
    sqLiteDatabase.execSQL(SQLQuery);

    // create SQL-answer-string
    String SQLAnswer = cursor.getString(cursor.getColumnIndex("name")) +
            "; Id=" + cursor.getString(cursor.getColumnIndex("id")) +
            "; Selected=" + cursor.getString(cursor.getColumnIndex("selected"));

    Toast.makeText(context, SQLQuery + "\n\n" + SQLAnswer, Toast.LENGTH_LONG).show();
}

当我在CheckBox上单击它一次时,它显示:

SQLQuery =>“更新国家集selected=1 WHERE id=3” SQLAnswer =>“捷克人;id=3;selected=1”

当我点击它两次时:

SQLQuery =>“更新国家集selected=0 WHERE id=3” SQLAnswer =>“捷克人;id=3;selected=1”

...and这个改变。因此,查询在0和1之间切换(取决于CheckBox),但答案永远不会变成0。

当我关闭应用程序并重新启动它时,数据库条目做得很好,但它在运行时没有更新。

有人想过(PHP从来没有过这样的问题)吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-01 01:15:55

我找到了一个方法:

代码语言:javascript
复制
Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM country  WHERE id='" + cursor.getString(cursor.getColumnIndex("id")) + "'", null);

c.moveToFirst();

System.out.println(c.getString(c.getColumnIndex("selected")));

谢谢你的评论和帮助。

我认为,“游标”是在MainAktivity中生成的,用于膨胀适配器,因此,从游标中获取适配器中的一行,将在创建适配器时检索状态,并且适配器以后不能修改。

我甚至无法理解这个用recyclerView或viewHolder构建的奇怪结构。它们会更改复选框,这些复选框由onClickListener提供,只有通过滚动才能实现,程序员必须纠正这些错误。他们真的很蠢。在我看来,列表应该被夸大,os (android)必须在内部优化它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53992330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档