Java listview为空时应用程序崩溃

Java listview为空时应用程序崩溃,java,android,listview,Java,Android,Listview,我尝试运行的应用程序有问题。我有一个listview,它由我在类的edittext中添加的名称组成。当没有项目时,当我移动到listview时,应用程序崩溃,并出现错误: java.lang.NullPointerException:尝试在空对象引用上调用接口方法int java.util.List.size 当我在listview中有一个或多个项目时,我可以看到它们而不会出现崩溃或错误。你能帮我吗?下面是我的代码 public class ListAdapter extends BaseAda

我尝试运行的应用程序有问题。我有一个listview,它由我在类的edittext中添加的名称组成。当没有项目时,当我移动到listview时,应用程序崩溃,并出现错误:

java.lang.NullPointerException:尝试在空对象引用上调用接口方法int java.util.List.size

当我在listview中有一个或多个项目时,我可以看到它们而不会出现崩溃或错误。你能帮我吗?下面是我的代码

public class ListAdapter extends BaseAdapter {
Context context;
List<Student> valueList;

public ListAdapter(List<Student> listValue, Context context)
{
    this.context = context;
    this.valueList = listValue;
}

@Override
public int getCount()
{
    return this.valueList.size();
}

@Override
public Object getItem(int position)
{
    return this.valueList.get(position);
}

@Override
public long getItemId(int position)
{
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    ViewItem viewItem;
    convertView = null;

    if(convertView == null)
    {

        viewItem = new ViewItem();

        LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

        convertView = layoutInfiater.inflate(R.layout.listviewitem, null);

        viewItem.TextViewStudentName = (TextView)convertView.findViewById(R.id.textView1);

        convertView.setTag(viewItem);

    }
    else
    {
        viewItem = (ViewItem) convertView.getTag();
    }

    viewItem.TextViewStudentName.setText(valueList.get(position).StudentName);


    return convertView;}}
class ViewItem{TextView TextViewStudentName;}

错误位于命令return this.valueList.size;中;。如果需要,我也可以发布代码的其他类。提前谢谢你

您好,请在设置适配器代码之前进行检查

if(yourDataList!=null && yourDataList.size() > 0 )
{
  yourListOrRecyclerView.setAdapter(adapter);
}

请按照上面解决问题的方法操作。

将代码张贴在向适配器发送项目的位置。因为valueList为空。null不为空,但为null.create valueList=new ArrayList;如果列表中的listValue=nullconstructor@TruongGiangDam这解决了我的问题。多谢各位@Alex welcome:您还应该在传递到适配器之前验证null listValue他可能忘记初始化list=new ArrayList;将这两个条件分开比较好,我认为iflist==null{//do sth…尝试找出导致列表为null的原因。}iflist.size>0{//您可以向用户显示这是一个空列表。这是一个很好的实践。}