Erstellen einer benutzerdefinierten OnClickListener
Ich habe eine ArrayList mit Buttons wo mein OCL wissen muss, welcher index I gedrückt wurde.
Der plan ist so etwas wie dieses:
MyOnClickListener onClickListener = new MyOnClickListener() {
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
returnIntent.putExtra("deleteAtIndex",idx);
setResult(RESULT_OK, returnIntent);
finish();
}
};
for (int i =0;i<buttonList.size();i++) {
buttonList.get(i).setText("Remove");
buttonList.get(i).setOnClickListener(onClickListener);
}
Wie funktioniert meine Implementierung der OCL müssen die Aussehen ?
Derzeit habe ich dieses:
public class MyOnClickListener implements OnClickListener{
int index;
public MyOnClickListener(int index)
{
this.index = index;
}
@Override
public void onClick(View arg0) {
}
}
Allerdings bin ich unsicher, was ich tun müssen, um innerhalb des Konstruktors meiner OCL, sowie die überschriebenen onClick
Funktion.
- wollen Sie übermitteln Daten an MyOnClickListener aus der for-Schleife?
- Ja, die index.
- ändern Sie Ihre für-Schleife ein und erstellen Sie neue ObjectEverytime und übergeben Sie den index in cunstructor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
set
setOnClickListener
an-Taste :EDIT :
für beendet Aktivität auf die Schaltfläche Klicken, die von nicht-Aktivität der Klasse, die Sie benötigen, um pass Aktivität Rahmen, um Ihre benutzerdefinierten OnClickListener als :
und ändern Sie den Konstruktor Ihrer benutzerdefinierten OnClickListener-Klasse :
public class MyOnClickListener extends Activity implements OnClickListener {
` setResult(Aktivität.RESULT_OK, returnIntent); finish(); `context.finish();
gibt mir einen compiler-Fehler.erhalten Sie Ihre Schaltfläche Wert in der Ansicht so, Sie finden es die index.
ändern Sie Ihre for-Schleife und erstellen neues Objekt zu jeder Zeit und übergeben Sie den index im Konstruktor.
Erhalten Sie index in die onClick-Methode.
Ich bin mir nicht sicher, dies gilt speziell für deinen Fall, aber ich hatte den Wunsch, erstellen Sie einen benutzerdefinierten listener für anklickbare Elemente zu verhindern angeklickt (wenn der Benutzer tippt schnell).
Meine Lösung war das erstellen einer listener-Klasse, die ich übergeben eine benutzerdefinierte Ausführbare und dann handle, ist Ausführbar, wenn die Schaltfläche angeklickt wird, das erste mal, aber man kann natürlich passieren, wird angepasstes Verhalten, ist dies nur eine sehr einfache Darstellung, wie es zu benutzen...
und dann, es zu benutzen (vorausgesetzt, Sie sind an einer Tätigkeit für die
this
Kontext)...