Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 如何设置可扩展大小的数组以防止空指针异常?_Java_Android_Arrays_Listview - Fatal编程技术网

Java 如何设置可扩展大小的数组以防止空指针异常?

Java 如何设置可扩展大小的数组以防止空指针异常?,java,android,arrays,listview,Java,Android,Arrays,Listview,目的是从MYSQL表中检索数据并将其输入列表视图。为了做到这一点,我将这些值放入一个数组中。但是,数组的长度似乎必须等于从表中获取的值的数量(可以变化);或者应用程序将响应空指针异常 我的问题是:如何将数组的长度设置为动态的,这样错误就不会演变?还是有别的办法 定义使用的数组: public String titleId[] = new String[2]; //Defining the arrays used public Integer imageId[] = n

目的是从MYSQL表中检索数据并将其输入列表视图。为了做到这一点,我将这些值放入一个数组中。但是,数组的长度似乎必须等于从表中获取的值的数量(可以变化);或者应用程序将响应空指针异常

我的问题是:如何将数组的长度设置为动态的,这样错误就不会演变?还是有别的办法

定义使用的数组:

       public String titleId[] = new String[2]; //Defining the arrays used
       public Integer imageId[] = new Integer[2];
          CustomList adapter = new
            CustomList(getActivity(), data.titleId, data.imageId);      
      listView.setAdapter(adapter);
将数组设置为等于以下值:(目前,这将执行2次迭代)

CustomList.java(用于设置自定义适配器)

公共类CustomList扩展了ArrayAdapter{
私人最终活动背景;
私有最终字符串[]titleId;
私有最终整数[]imageId;
公共自定义列表(活动上下文,
字符串[]标题ID,整数[]图像ID){
超级(上下文,右布局,单行,标题ID);
this.context=上下文;
this.titleId=titleId;
this.imageId=imageId;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
LayoutInflater充气器=上下文。getLayoutInflater();
视图行视图=充气机。充气(R.layout.single_row,null,true);
TextView txtTitle=(TextView)rowView.findViewById(R.id.tvTitle);
ImageView ImageView=(ImageView)rowView.findViewById(R.id.ivIcon);
setText(titleId[位置]);
setImageResource(imageId[位置]);
返回行视图;
}
}

我建议您使用JDK提供的动态数据结构。更具体地说,那些实现
列表
接口的人似乎符合您的目标

您应该在
列表
对象中收集数据,然后可以从中生成数组

例如:

List<String>  titleId = new ArrayList();
最后,从列表生成一个数组,并将其传递给
CustomList
构造函数:

CustomList adapter = new CustomList(getActivity(), data.titleId.toArray(), ...);

您可以使用
ArrayList
而不是
Array
来(int i=0;iSince ArrayList不能直接使用,那么我该如何编辑用于创建自定义适配器的CustomList.java文件。我已经更新了这个问题。@jamesgate1我不理解你的评论。你的意思是你根本不能在程序中使用
ArrayList
?也不能使用
LinkedList
?不,我是说CustomList.java不接受ArrayList。它只接受数组。它在程序的其他部分工作正常。@jamesgates1这就是为什么我写你必须使用
toArray()
方法的原因。它将返回一个与列表内容相同的数组。请检查我最后一行的答案。谢谢!你非常有帮助:)
List<String>  titleId = new ArrayList();
while(res.next())
{
    titleId.add(res.getString("dbTableColumn"));
}
CustomList adapter = new CustomList(getActivity(), data.titleId.toArray(), ...);