Activité d'appel de méthode à partir de l'adaptateur
Est-il possible d'appeler une méthode est définie dans Activity
de ListAdapter
?
(Je veux faire un Button
dans list's
ligne et lorsque ce bouton est cliqué, il doit procéder à la méthode, qui est définie dans l'Activité correspondante. J'ai tenté de onClickListener
dans mon ListAdapter
mais je ne sais pas comment appeler cette méthode, ce qui est son chemin...)
lorsque j'ai utilisé Activity.this.method()
j'obtiens l'erreur suivante:
No enclosing instance of the type Activity is accessible in scope
Une Idée ?
- vous ne pouvez pas appeler de l'activité.dans certains autres classe, sauf si c'est un intérieur de classe à cette activité. suivez @Eldhose M Babu solution pour votre cas
InformationsquelleAutor user1602687 | 2012-08-27
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez.
Dans l'adaptateur d'Ajouter un nouveau Champ :
Dans le Constructeur d'adaptateur d'ajouter le code suivant :
Dans le getView(...) de l'Adaptateur:
remplacer par vos propres noms de classe où vous voyez votre code, votre activité, etc.
Si vous avez besoin d'utiliser la même carte pour plus d'une activité, alors :
Créer une Interface
Implémenter cette interface dans les activités vous avez besoin d'avoir cette méthode d'appel de la fonctionnalité.
Ensuite l'Adaptateur de getView(), appelez le comme:
Vous avez terminé. Si vous avez besoin pour utiliser cette carte pour des activités qui ne nécessitent pas de ce mécanisme d'appel, le code ne s'exécute pas (Si échec).
((YourActivityName)mContext).yourDesiredMethod();
Vous pouvez le faire de cette façon:
Déclarer interface:
Laissez votre Activité imlement c':
Puis passez votre activité à ListAdater:
Et quelque part dans l'adaptateur, quand vous en avez besoin pour appeler cette méthode active:
Original:
Je comprends la réponse actuelle, mais avait besoin d'un plus clair exemple. Voici un exemple de ce que j'ai utilisé avec un
Adapter
(RecyclerView.Adaptateur) et unActivity
.Dans votre Activité:
Cela permettra de mettre en œuvre les
interface
que nous avons dans notreAdapter
. Dans cet exemple, il sera appelé lorsque l'utilisateur clique sur un élément dans laRecyclerView
.De votre Carte:
Dans le
Activity
, nous avons lancé notreAdapter
et passé ce en argument du constructeur. Cela va lancer notreinterface
pour notre méthode de rappel. Vous pouvez voir que nous utilisons notre méthode de rappel pour les clics.EventBus
comme vous l'avez suggéré?De base et simple.
Dans votre adaptateur simplement utiliser ce.
((YourParentClass) context).functionToRun();
D'une façon de plus est::
Écrire une méthode de votre adaptateur permet de dire
public void callBack(){}.
Maintenant, alors que la création d'un objet de la carte dans l'activité de remplacer cette méthode.
Remplacer la méthode sera appelée lorsque vous appelez la méthode dans l'adaptateur.
Pour Kotlin:
De votre carte, appelez simplement
cette condition va vous permettre d'exécuter quelque chose si l'Activité qui a le
GroupView
que demander de vues à partir de lagetView()
méthode de votreadapter
estyourActivity
REMARQUE :
parent
est que GroupViewgetView()
méthode.....nous obtenons donc le contexte de cette GroupView, et de l'examiner à travers la condition ci-dessus