GetLayoutInflater dentro de la costumbre simpleCursorAdapter

Estoy atascado con la creación de adaptador personalizado. Quiero setOnClickListener en los botones dentro de ListView y encontré este tema que parece bien cómo-a-setonclicklistener-en-el-botón-dentro de la lista, pero el problema es que estoy recibiendo error de código inalcanzable en la línea getLayoutInflater .

Aquí está mi código

public class MyCursorAdapter extends SimpleCursorAdapter{ private final Context ctx; private Button tagButton = null; public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); ctx = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { return super.getView(position, convertView, parent); LayoutInflater li = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = li.inflate(R.layout.tags_list_element, null, true); tagButton= (Button)rowView.findViewById(R.id.tag_title); tagButton.setTag(position); tagButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { } }); return rowView; } } 

Ambos métodos no funcionan para mí

  LayoutInflater inflater = context.getLayoutInflater(); 

y

 LayoutInflater li = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

Tratar:

 View myView = LayoutInflater.from(ctx).inflate(R.layout.my_view, null); 

Además, ¿qué excepción se obtiene?


Edit: En su método "getView", la primera línea es "return …..", por lo que el resto de su método nunca se ejecutará, creo ….;)

Desde el punto de vista del rendimiento:

 View myView = LayoutInflater.from(context).inflate(R.layout.my_view, parent, false); 

Es correcto; Pero su más eficiente para almacenar el inflador en un campo final dentro del adaptador.

 private final Context ctx; private final LayoutInflater mInflater; private Button tagButton = null; public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); ctx = context; mInflater = LayoutInflater.from(ctx); } 

Luego haga su operación getView.

 //.... final View v = mInflater.inflate(R.layout.list_item, parent, false); //.... //stuff here // return v; 

TAMBIÉN asegúrese de que el Contexto es su Contexto de Actividad, obtendrá problemas de Theming si utiliza el contexto incorrecto.

Saludos, Chris

  • Android Exception "El niño especificado ya tiene un padre ..."
  • Android: ¿Cómo evito que el teclado suave empuje mi vista hacia arriba?
  • ¿Cuál es la diferencia entre layout-large-v11 y layout-xlarge
  • RelativeLayout no se puede convertir en android.support.v7.widget.Toolbar
  • Diseño de cuadrícula de botones 2x2
  • ¿Cómo puedo averiguar qué aspecto de los archivos xml de android.R.layout / obtener la fuente?
  • Intervalo de números seguro para mi propio ID en diseño dinámico?
  • Mutiple fragmentos en un vertical Linearlayout
  • FindViewById () devuelve null para el componente personalizado en XML de presentación, no para otros componentes
  • SetClickable () no funciona en el botón
  • ¿Es posible sustituir / aplicar estilo en el diseño incluido con la etiqueta <include>?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.