2016-05-20 21 views
1

Ich habe eine GridView, die dynamisch aus SQLite-Datenbankeinträgen generiert wird. Eine Aktivität wird gestartet, wenn ein Benutzer auf einen der Einträge GridView tippt. Während der Zeit vom Tippen und dem Start der Aktivität gibt es einen Sekundenbruchteil, in dem der Benutzer schnell andere Gridview Elemente antippen kann, die ihre onItemClick Methode initiieren. Gibt es einen Weg, so dass alle GridView Artikel onItemClick Methoden deaktiviert sind nach der Auswahl eines? HierGridView-Elemente bei Klick deaktivieren

ist der Code:

gridView = (GridView) findViewById(R.id.gridView); 
nautsList = db.getAllNauts(); 
nautsGridAdapter = new AwesomenautGridViewAdapter(this, R.layout.gridview_item, nautsList); 
gridView.setAdapter(nautsGridAdapter); 

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, 
            int position, long id) { 
     //do stuff 
     Intent intent = new Intent(AwesomenautSelectionActivity.this, AwesomenautSoundActivity.class); 
     startActivity(intent); 
     } 
}); 

Antwort

1

Ich würde diese einfache Lösung verwenden. Es wird erfolgreich in unseren Apps verwendet. Erstellen Sie einen globalen booleschen Wert itemsLocked und setzen Sie ihn auf True, sobald Sie auf klicken. Setzen Sie ihn kurz vor startActivity auf false zurück. Schließlich wird in Methode onItemClick hinzufügen

if (itemsLocked) return; 

EDIT: Methode onItemClick

public void onItemClick(AdapterView<?> parent, View v, 
           int position, long id) { 
    if (itemsLocked) return; 
    itemsLocked = true; 

    //do stuff 
    Intent intent = new Intent(...); 
    itemsLocked = false; 
    startActivity(intent); 
} 
+0

Solch eine nette, einfache, elegante Lösung! Funktioniert perfekt. Danke vielmals – blueprintChris