2016-04-12 9 views
0

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; 
    } 
}); 

Antwort

0

Sie haben Ihre Adapter zu benachrichtigen, dass die Daten geändert hat.

customGridAdapter.notifyDataSetChanged(); 
+0

Wie ich sagte, dass die Daten in der db hinzufügen, aber es nicht auf dem Bildschirm anzeigt, hat notifyDataSetChanged nichts damit zu tun –

+0

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 –

0

Ich bin nicht 100% sicher, aber sollte es nicht eine

ArrayAdapter.getItemCount() 

sein Vielleicht haben Sie nicht die Rückkehr Wert von 0 bis data.size (ändern).

+0

Ok sir Lemme das versuchen –