Java.lang.IllegalArgumentException: No se puede tener un viewTypeCount <1
Estoy recibiendo este error:
java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1
Estoy bastante seguro de saber exactamente lo que está causando, pero no sé cómo solucionarlo.
- ¿Cuánto de la API de Java 6 es implementado por Android?
- Autofocus de la cámara Android cuando el usuario mantiene la cámara inmóvil
- Ajuste de prioridad de solicitud Volley
- Inicio de sesión en bibliotecas de "código de biblioteca Java" para aplicaciones de Android
- Programación de mensajes de texto - expiración
Mi aplicación carga a los amigos de los usuarios de la base de datos. Cuando el usuario tiene al menos un amigo para poner en la vista de lista, está bien. Cuando el usuario es nuevo y aún no tiene amigos, la aplicación se bloquea porque la vista de lista tiene un recuento de 0.
¿Es esto simplemente un caso de manejo de errores?
¡Si no publico todo el código relevante necesario por favor hágamelo saber!
Aquí está mi adaptador:
public class MyAdapter extends ArrayAdapter<HashMap<String, String>> { Context context; int resourceId; LayoutInflater inflater; private Context mContext; @Override public int getViewTypeCount() { return getCount(); } @Override public int getItemViewType(int position) { return position; } ArrayList<HashMap<String, String>> items; public MyAdapter (Context context, int resourceId, ArrayList<HashMap<String, String>> items) { super(context, resourceId, items); mContext = context; this.items =items; inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent){ final ViewHolder holder; if (convertView == null){ convertView = inflater.inflate(R.layout.list_item, null); holder = new ViewHolder(); holder.fbphoto = (ImageView)convertView.findViewById(R.id.fbphoto); holder.name = (TextView)convertView.findViewById(R.id.name); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } final HashMap<String,String> item = (HashMap<String,String> ) items.get(position); if (item != null) { String facebookProfilePicUrl = "https://graph.facebook.com/"+item.get(TAG_FACEBOOKID)+"/picture?width=150&height=150"; Picasso.with(mContext) .load(facebookProfilePicUrl) .placeholder(R.drawable.no_image) .into(holder.fbphoto); holder.name.setText(item.get(TAG_USERNAME)); } return convertView; } public class ViewHolder { ImageView fbphoto; TextView name; } }
- Aplicación no instalada 'Error en Android 2.3.4
- Cómo obtener una respuesta JSON grande en Android Sybase Unwired Platform
- ¿Cómo recibir aleatoriamente un Material Design Color?
- Java JNI vs. Android NDK
- ¿Hay alguna razón por la que no debería almacenar mi almacén de claves en el control de versiones?
- Android complejo método onDraw () vs diseño personalizado
- Cómo activar mediante programación GPS en Android Cupcake
- Detener una ejecución en un hilo independiente
Creo que te pierdas el punto de ViewTypeCount. Debe devolver el número de diferentes tipos de vista en su lista. Esto es importante para el reciclaje de las vistas dentro de la lista.
Imaging tiene 2 tipos de Listitems, uno con un fondo blanco y uno con fondo negro. Cuando devuelve 2 como ViewTypeCount el Listview sabe bien, hay un 2 tipos de Listitems y no los mezclará en el recopilación de vista getView.
Tan apenas uso:
public int getViewTypeCount() { return 1; }
O no reemplazar ese método en absoluto.
GetViewTypeCount devuelve el número de diferentes tipos de vistas que este adaptador puede devolver. Puesto que solo estás devolviendo un tipo de vista, esto solo devolverá 1.