Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IllegalArgumentException:Can';没有viewTypeCount<;1._Java_Android - Fatal编程技术网

java.lang.IllegalArgumentException:Can';没有viewTypeCount<;1.

java.lang.IllegalArgumentException:Can';没有viewTypeCount<;1.,java,android,Java,Android,我得到了这个错误: java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1 java.lang.IllegalArgumentException:不能具有小于1的viewTypeCount 我很确定我确切地知道是什么导致了它,但我不知道如何修复它 我的应用从数据库中加载一个用户好友。当用户在列表视图中至少有一个朋友时,就可以了。当用户是全新用户且没有朋友时,应用程序会崩溃,因为listview的计数为0 这仅

我得到了这个错误:

java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1
java.lang.IllegalArgumentException:不能具有小于1的viewTypeCount
我很确定我确切地知道是什么导致了它,但我不知道如何修复它

我的应用从数据库中加载一个用户好友。当用户在列表视图中至少有一个朋友时,就可以了。当用户是全新用户且没有朋友时,应用程序会崩溃,因为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;

    }
}
公共类MyAdapter扩展了ArrayAdapter{
语境;
智力资源ID;
充气机;
私有上下文;
@凌驾
public int getViewTypeCount(){
返回getCount();
}
@凌驾
public int getItemViewType(int位置){
返回位置;
}
数组列表项;
公共MyAdapter(上下文上下文、int resourceId、ArrayList项)
{
超级(上下文、资源ID、项目);
mContext=上下文;
这个项目=项目;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终持票人;
if(convertView==null){
convertView=充气机。充气(R.layout.list_项,空);
holder=新的ViewHolder();
holder.fbphoto=(ImageView)convertView.findViewById(R.id.fbphoto);
holder.name=(TextView)convertView.findViewById(R.id.name);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
final HashMap item=(HashMap)items.get(position);
如果(项!=null)
{
字符串facebookProfilePicUrl=”https://graph.facebook.com/“+item.get(TAG_facebook id)+”/picture?宽度=150,高度=150”;
毕加索(McContext)
.load(facebookProfilePicUrl)
.占位符(R.可绘制.无图像)
.into(holder.fbphoto);
holder.name.setText(item.get(TAG_USERNAME));
}
返回视图;
}
公共类视图持有者
{
ImageView fbphoto;
文本视图名称;
}
}

我想你没有抓住ViewTypeCount的重点。您应该返回列表中不同视图类型的数量。 这对于循环列表中的视图很重要

您有两种类型的列表项,一种是白色背景,另一种是黑色背景。当您返回2作为ViewTypeCount时,Listview知道ok,有2种类型的Listitems,并且不会在getView循环中混淆它们

所以只要使用:

   public int getViewTypeCount() {                 
        return 1;
    }

或者根本不重写该方法。

getViewTypeCount返回此适配器可以返回的不同类型视图的数量。因为您只返回一种类型的视图,所以应该只返回1。

使用此选项

@Override
public int getViewTypeCount() {
    if(getCount() > 0){
        return getCount();
    }else{
        return super.getViewTypeCount();
    }
}

getViewTypeCount()
应返回您拥有的视图类型数,而不是行数。您的
getView()
实现只返回一种类型的视图,因此
getViewTypeCount()
应该返回
1
。阅读更多关于
ListAdapter
视图类型的信息。我误读了“当用户是全新的并且还没有朋友时,应用程序会崩溃,因为listview的计数为0。这仅仅是一个错误处理的情况吗?”并且一开始给出了错误的答案。在链接中有3个不同的视图,因此getViewTypeCount返回3。当列表为空时,可以显示空视图