¿Cómo iniciar la actividad en el adaptador?

Tengo una ListActivity con mi adaptador personalizado. y dentro de cada vista, puede tener algunos botones, en los que necesito implementar OnClickListener. Necesito implementar OnClickListener en el adaptador. Sin embargo, no sé cómo llamar a la función como startActivity () o setResult (). ya que el adaptador no se extiende a la Actividad.

Entonces, ¿cuál es la mejor manera de resolver este problema? Gracias

Simplemente pase el Contexto actual al constructor del Adaptador y almacénelo como un campo. Luego, dentro de onClick puede usar ese contexto para llamar a startActivity ().

pseudo-código

public class MyAdapter extends Adapter { private Context context; public MyAdapter(Context context) { this.context = context; } public View getView(...){ View v; v.setOnClickListener(new OnClickListener() { void onClick() { context.startActivity(...); } }); } } 

Al implementar onClickListener , puede usar v.getContext.startActivity .

 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { v.getContext().startActivity(PUT_YOUR_INTENT_HERE); } }); 
 public class MyAdapter extends Adapter { private Context context; public MyAdapter(Context context) { this.context = context; } public View getView(...){ View v; v.setOnClickListener(new OnClickListener() { void onClick() { Intent intent= new Intent(context, goto.class); intent.putextra("your_extra","your_class_value"); context.startActivity(intent); } }); } } 

Para las versiones más nuevas de SDK, debe establecer la tarea de actividad de indicador.

 public void onClick(View v) { Intent myactivity = new Intent(context.getApplicationContext(), OtherActivity.class); myactivity.addFlags(FLAG_ACTIVITY_NEW_TASK); context.getApplicationContext().startActivity(myactivity); } 

la callback desde el adaptador a la actividad se puede hacer utilizando el registrador de escucha en forma de interfaz: crear una interfaz:

  public MyInterface{ public void yourmethod(//incase needs parameters ); } 

En Adapter Let’s Say MyAdapter:

  public MyAdapter extends BaseAdapter{ private MyInterface listener; MyAdapter(Context context){ try { this. listener = (( MyInterface ) context); } catch (ClassCastException e) { throw new ClassCastException("Activity must implement MyInterface"); } 

// haz esto donde necesites disparar al oyente l

  try { listener . yourmethod (); } catch (ClassCastException exception) { // do something } In Activity Implement your method: MyActivity extends AppCompatActivity implements MyInterface{ yourmethod(){ //do whatever you want } }