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.
- Información sobre la clase Movie para Android
- Cómo agregar configuraciones propias de VPN con Java Reflecion (Android SDK 14+)
- Mejora el adaptador grande ListView deslizamiento suave, a veces espasmódico
- ¿Se llamará a este método? (Todavía necesita una respuesta aceptada ... Ver detalles en la respuesta)
- Vista de la superficie con la cámara no funcionando en Android API 23 (Android 6+)
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; } }
- Refrescar una vista dentro de un fragmento
- Android, ¿Cómo usar el método readTypedList correctamente en una clase Parcelable?
- ¿Existe un método para vibrar por menos de 1 milisegundo en Android?
- ¿Puede un futuro programado causar una pérdida de memoria?
- ¿Cómo determinar el número de tarjetas SIM en un dispositivo?
- No se puede resolver el símbolo JSONParser
- Hilo que se queda atascado en BlockingQueue.take sin motivo aparente
- Señal de error de Android 11 cuando una película dibuja en un lienzo
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.