我收到此错误:
java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1
我很确定我完全知道是什么原因造成的,但是我不知道如何解决它。
我的应用程序从数据库中加载用户朋友。当用户至少有1个朋友可以放入列表视图时,就可以了。当用户是全新用户并且还没有朋友时,该应用程序将崩溃,因为listview的计数为0。
这仅仅是错误处理的情况吗?
如果我没有发布所有必要的相关代码,请告诉我!
这是我的适配器:
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;
}
}
我认为您错过了ViewTypeCount的观点。您应该在列表中返回“不同视图类型”的数量。这对于回收列表中的视图很重要。
成像您有两种类型的Listitems,一种具有白色背景,一种具有黑色背景。当您以ViewTypeCount返回2时,Listview知道还可以,有2种Listitems,并且不会在getView视图回收中混淆它们。
所以只需使用:
public int getViewTypeCount() {
return 1;
}
或根本不重写该方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句