2010-03-23 12 views
18

Datos que se extraen de un DB local, luego se asignan usando un cursor. Custom Adapter muestra datos similares a un ListView. A medida que se agregan/eliminan elementos de la base de datos, se supone que el adaptador debe actualizarse. La solución intentada a continuación bloquea la aplicación en el lanzamiento. ¿Alguna sugerencia?Android: Custom ListAdapter que extiende bloqueos de BaseAdapter en el inicio de la aplicación

Gracias de antemano, -D

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    ViewGroup p = parent;    
    if (v == null) { 
    LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = vi.inflate(R.layout.items_row, p); 
    } 
    int size = mAdapter.getCount(); 
    Log.d(TAG, "position " + position + " Size " + size); 
    if(size != 0){ 
    if(position < size) return mAdapter.getView(position, v, p); 
    Log.d(TAG, "-position " + position + " Size " + size); 
    } 
    return null; 
} 

Excepción:

03-23 00:14:10.392: ERROR/AndroidRuntime(718): java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.widget.AdapterView.addView(AdapterView.java:461) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at com.xyz.abc.CustomSeparatedListAdapter.getView(CustomSeparatedListAdapter.java:90) 
... 

Respuesta

87
v = vi.inflate(R.layout.items_row, p); 

Añadir un tercer parámetro false a esa llamada, y creo que su problema va a desaparecer. La llamada debe convertirse en:

v = vi.inflate(R.layout.items_row, p, false); 
+6

un año más tarde, este comentario que sigue siendo útil! gracias ^^ – davogotland

+1

¡Dios mío! Acepta esto ya! – DeeV

+1

¡Esta es la respuesta! Ya tenía este problema pero me olvidé de poner el parámetro falso adicional esta vez, ya que ha pasado un tiempo y, efectivamente, esto lo solucionó. – rushinge

7

cambio de este código

v = vi.inflate(R.layout.items_row, p); 

a

v = vi.inflate(R.layout.items_row, null); 
+0

advertencia! Respuesta incorrecta. Por favor, consulte http://www.doubleencore.com/2013/05/layout-inflation-as-intended/ – seanpj

Cuestiones relacionadas