Saltar al contenido

Llamar a un método Fragment desde un adaptador

Hola, tenemos la solución a tu pregunta, has scroll y la encontrarás a continuación.

Solución:

Editar :
Esto es lo que usaría ahora. Las soluciones más antiguas y “más fáciles” están disponibles a continuación.

MyFragment extends Fragment implements CustomAdapter.EventListener 

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 

        CustomAdapter adapter = new CustomAdapter(..., this);

    

    void onEvent(int data) 
        doSomething(data);
    



CustomAdapter extends BaseAdapter 

    EventListener listener; 

    public interface EventListener 
        void onEvent(int data);   
    

    public CustomAdapter(..., EventListener listener) 
        this.listener = listener; 
    

    ...


Ahora desde cualquier lugar del adaptador podemos llamar listener.onEvent(data); para activar el método en el fragmento.

Además, en lugar de proporcionar un oyente a través del constructor, podemos agregar otro método en el adaptador, como registerListener(EventListener eventListener) y luego mantenga una lista de oyentes si es necesario.

Respuesta antigua:

Solución 1: haga que el adaptador sea una clase interna de su fragmento, para que pueda llamar al método directamente.

Solución 2: actualice el constructor de su adaptador para aceptar el Fragmento como parámetro.

Algo como :

customAdapter = new CustomAdapter(myContext, android.R.layout.simple_list_item_1, getList, HomeFragment.this);

y actualice el constructor del adaptador:

public CustomAdapter(Context context, int id, HomeFragment fragment) 
    this.fragment = fragment;

luego llamas a los métodos usando la variable fragment.

fragment.doSomething();

Sección de Reseñas y Valoraciones

Recuerda algo, que puedes decir .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *