Я хочу добавить кнопку закладки, что мне нужно, когда я нажимаю на кнопку закладки, она проверяет, существует ли запись в 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также не меняет значок при просмотре веб-страниц.