【发布时间】:2015-08-13 10:05:50
【问题描述】:
我有一个预先填充了一些数据的 sqlite 数据库,我希望有一种方法/功能,使用户能够“保存”他的收藏夹中的信息并显示它。唯一的问题是我的查询无法正常工作。我不明白如何从活动中当前显示的数据(来自数据库)中获取位置并将其保存到数据库中。我在 db 中有一个名为“Favorites”的列,默认值设置为“no”,当用户单击按钮时,该值应更改为“yes”。
用户单击从数据库填充的列表视图中的一行,并使用intent.putExtra(来自数据库的数据)启动一个新活动。新活动在单个文本视图中显示数据。在这个新活动中,我制作了一个导航抽屉/列表视图(通过滑动或“汉堡菜单”显示)。在这个导航抽屉中,我有一个“按钮”,我想根据当前显示的数据从数据库中获取 id 并更改“收藏夹”列的值。在我使用的另一个类中
Cursor c = dbHelper.showBook(Integer.toString(position + 1));
从我最近的另一个线程中获得了这个帮助,它运行良好,但我的新问题是我有如下的 if 语句。意图的开始工作正常。但我想从我的 dbHelper 调用一个方法来更新 db 中的行。当我尝试使用上面的代码时,它不起作用(但没有错误)。吐司显示,但数据库中没有发生任何事情。
myDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
Intent iHome = new Intent(DisplayBook.this, MyAccont.class);
startActivity(iHome);
else if (position == 3){
dbHelper.addFavorites(Integer.toString(position+ 1));
Toast.makeText(getApplicationContext(), "Added to favorites", Toast.LENGTH_SHORT).show();
dbHelper.addFavorites:(addFavs 参数应该是 db 行的 id/pos,如上面的工作代码中所示) public void addFavorites(String addFavs){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COL_FAV, "yes");
String whereClause = COL_ID + " = ?" ;
String[] whereArgs = new String[] { addFavs};
db.update(
TABLE_NAME,
values,
whereClause,
whereArgs);
}
我已经尝试了相当多的版本以及不同的代码和东西,但没有任何效果,现在我正在寻求有关这方面的建议。我怎样才能以一种有效的方式做到这一点?非常感谢您的帮助!
编辑:通过使用数组而不是字符串生成器来解决它。我将数据库中的 id 保存在 [0] 中,并在 dbHelper.addFavorites(myStringArray[0]); 中使用它;
在
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor c = dbHelper.aClass(Integer.toString(position + 1));
StringBuilder sb = new StringBuilder();
while (c.moveToNext()) {
myStringArray[0] = c.getString(0);
myStringArray[1] = c.getString(4);
Intent i = new Intent(classA.this, classB.class);
i.putExtra(null, myStringArray);
startActivity(i);
【问题讨论】:
标签: android database sqlite listview