让用户从抽头/列表视图中添加/删除收藏夹并将其保存到SQLite数据库

时间:2015-05-30 15:58:07

标签: android database sqlite listview

我有一个预先填充了一些数据的sqlite数据库,我希望有一个方法/功能,使用户能够“保存”#34;他最喜欢的信息并显示出来。唯一的问题是我的查询有问题才能正常工作。我不了解如何从活动中的当前显示数据(来自数据库)中获取位置并将其保存到数据库中。我有一个名为"收藏夹"在db中,默认值设置为" no"当用户点击按钮时,该值应更改为"是"。

用户单击从DB填充的listview中的行,它将使用intent.putExtra(来自db的数据)启动新活动。新活动在单个文本视图中显示数据。在这项新活动中,我制作了一个导航抽屉/列表视图(通过滑动显示或" hamburger meny")。在这个导航抽屉里,我有一个"按钮"我想根据当前显示的数据从数据库中获取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 param应该是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);

}

我已经尝试了相当数量的版本,不同的代码和东西,但没有任何作用,现在我要求som建议。我怎样才能以一种有效的方式做到这一点?非常感谢您的帮助!

编辑:使用数组而不是使用stringbuilder解决它。我在[0]中保存数据库中的id并在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);

1 个答案:

答案 0 :(得分:0)

我不是舒尔,但你的问题可能就是这句话 ContentValues values = new ContentValues();
尝试将其更改为:
ContentValues values = new ContentValues(1);
根据我的经验,你应该写出你想要发送到数据库的变量数量。