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