Wie kann ich eine Onclick-Funktion für das rechte Zeichen ausführen? Ich habe eine Gridview Item Liste, in der ich ein Recht auf jedes Element einziehbar, so dass, wenn Benutzer etwas in EditText dann das Recht Drawable im Hintergrund anzeigen und das Zeichen löschbare Symbol ist, so dass ich OnClick Listener nur für diese Zeichenbare durchführen möchten Wenn der Benutzer auf diese Löschzeichen klopft, wird eine Aktion ausgeführt. Ich schreibe den folgenden Code, aber es funktioniert nichtOnClick für Rechts Drawable in Gridview-Elementen (EDITED)
keywordslist.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(final View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
if(event.getRawX() >= (keywordslist.getRight() - keywordslist.getPaddingRight())) {
new AlertDialog.Builder(context)
.setMessage("Remove " + ((TextView) v).getText().toString() + "?")
.setNeutralButton("No", null)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DBkeyword dbkey = new DBkeyword(context);
SQLiteDatabase dbw = dbkey.getWritableDatabase();
String deleteKeyword = "delete from " + "screenedkeywords" + " where " + "keywords" + " = \"" + ((TextView) v).getText().toString() + "\"";
dbw.execSQL(deleteKeyword);
dbw.close();
DisplayKeywords();
}
});
return true;
}
}
return false;
}
});
Wie ich sagte, dass die Daten in der db hinzufügen, aber es nicht auf dem Bildschirm anzeigt, hat notifyDataSetChanged nichts damit zu tun –
Erste Sache, wenn Ihre db hat Update dann auch Sie müssen Ihre gescreastedKeyWords Arraylist aktualisieren, wie jedes Element wurde in DB geändert. Wenn sich die Arraylist geändert hat, müssen Sie Ihren Adapter benachrichtigen. Zweite Sache ..Lesen Sie über notifyDataSetChanged, was es tut –