Как добавить кнопку закладки с записью существует или нет в состоянии базы данных sqlite - PullRequest
0 голосов
/ 31 мая 2019

Я хочу добавить кнопку закладки, что мне нужно, когда я нажимаю на кнопку закладки, она проверяет, существует ли запись в SQLite, затем удаляет закладку, если не существует, затем добавляет закладку.

Вставить метод, Получить метод и Удалить метод (DatabaseHelper.class)

   public boolean insertData(String title, String url)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(title_name,title);
    cv.put(url_name,url);
    long result =  db.insert(TABLE_NAME,null,cv);
    if(result == -1)
        return false;
    else
        return true;
}

  public ArrayList<HashMap<String, String>> getalldata()
{
    SQLiteDatabase db = this.getWritableDatabase();
    ArrayList<HashMap<String, String>> userList = new ArrayList<>();
    Cursor cursor = db.rawQuery("select * from " + TABLE_NAME,null);


    while (cursor.moveToNext()){
        HashMap<String,String> user = new HashMap<>();
        user.put("ID",cursor.getString(cursor.getColumnIndex(Id_name)));

   user.put("title",cursor.getString(cursor.getColumnIndex(title_name)));
        user.put("url",cursor.getString(cursor.getColumnIndex(url_name)));
        userList.add(user);
    }
    return userList;


}


public Integer DeleteData (String id)
{
    SQLiteDatabase db = this.getWritableDatabase();

    return db.delete(TABLE_NAME,"ID = ?",new String[] {id});

}

onCreateOptionsMenu

   userList = mydb.getalldata();     //Hashmap Array List
    for (HashMap msg : userList) {
        HashMap hashMap = (HashMap) msg;
        mapoptionsmenu = (String) (hashMap.get("url"));   //String mapoptionsmenu
        newkeylist.add(mapoptionsmenu);   //Arraylist
    }

    if(mapoptionsmenu!=null) {

        if (newkeylist.contains(wv.getUrl())) {

            menu.getItem(0).setIcon(R.drawable.ic_bookmark_white_24dp);
        } else {

     menu.getItem(0).setIcon(R.drawable.ic_bookmark_outline_white_24dp);
        }
    }
    else {

  menu.getItem(0).setIcon(R.drawable.ic_bookmark_outline_white_24dp);
    }
    return true;
}

Нажатие на кнопку закладкив OnOptionsItemSelected

   userList = mydb.getalldata();      //Hashmap Array List

        for (HashMap link : userList)
        {
            HashMap hashMap = (HashMap) link;
            mapbookurl = (String) (hashMap.get("url"));    //String
            mapbookkey = (String)(hashMap.get("ID"));      //String
            newkeylist.add(mapbookurl);                    //Arraylist
            newkeylist.add(mapbookkey);                    //Arraylist
        }

        if(mapbookkey!=null && mapbookurl!=null)
        {

            if(newkeylist.contains(wv.getUrl()))
            {
                showtoast("Adddata if ");
               Integer hello = mydb.DeleteData(mapbookkey);
               if(hello>0)
               {
                   Toast.makeText(this, "Bookmark Removed", Toast.LENGTH_SHORT).show();
                   newkeylist.remove(mapbookkey);
                   newkeylist.remove(mapbookurl);
                   userList = mydb.getalldata();
                   mydb.alter();
                   invalidateOptionsMenu();
               }
               else
               {
                   Toast.makeText(this, "Error Bookmark", Toast.LENGTH_SHORT).show();
               }
            }
            else
            {
                adddata();
                showtoast("addtataelse1");
            }
        }
        else
        {
            showToast("Add data else 2");
            adddata();
        }


        invalidateOptionsMenu();

Это не работает.Когда я нажимаю кнопку закладки, она добавляет закладку, а затем нажимает снова, удаляет закладку , но из ArrayList последний раз получает идентификатор , но не меняет значок, пока я не перезапущу приложение.

Itтакже не меняет значок при просмотре веб-страниц.

...