Android应用程序崩溃取决于对象数组的声明方式?

Android应用程序崩溃取决于对象数组的声明方式?,android,arrays,listadapter,Android,Arrays,Listadapter,谢谢你的阅读和帮助!我真的很感激。在我应用程序中的一个活动中,我有一个列表视图,它应该显示一个自定义类型为“MemberListObject”的数组。我还有一个自定义MemberListObjectAdapter类。当我对数组进行delcare处理时(在OnCreate方法中),代码非常有效。列表也显示了我想要的内容 MemberListObject[] memberListObject_data = new MemberListObject[]{ new MemberListObjec

谢谢你的阅读和帮助!我真的很感激。在我应用程序中的一个活动中,我有一个列表视图,它应该显示一个自定义类型为“MemberListObject”的数组。我还有一个自定义MemberListObjectAdapter类。当我对数组进行delcare处理时(在OnCreate方法中),代码非常有效。列表也显示了我想要的内容

MemberListObject[] memberListObject_data = new MemberListObject[]{
    new MemberListObject(R.drawable.icon_pin,"Chocolate")
};
MemberListObjectAdapter adapter = new MemberListObjectAdapter(this, 
            R.layout.listview_item_row, memberListObject_data);
listView1.setAdapter(adapter);
但是,当我像这样处理阵列时

MemberListObject[] memberListObject_data= new MemberListObject[5];
 memberListObject_data[0].icon=(R.drawable.icon_pin); 
 memberListObject_data[0].title="Chocolate";
 MemberListObjectAdapter adapter = new MemberListObjectAdapter(this, 
            R.layout.listview_item_row, memberListObject_data);
listView1.setAdapter(adapter);
我的应用程序在活动运行时崩溃,这让我困惑了一段时间

这是我的“MemberListObjectAdapter.java”

公共类MemberListObjectAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
MemberListObject数据[]=null;
公共MemberListObjectAdapter(上下文上下文、int-layoutResourceId、MemberListObject[]数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
WeatherHolder=null;
if(行==null)
{
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的密封支架();
holder.imgIcon=(ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle=(TextView)row.findViewById(R.id.txtTitle);
row.setTag(支架);
}
其他的
{
holder=(WeatherHolder)row.getTag();
}
MemberListObject MemberListObject=数据[位置];
holder.txtTitle.setText(memberListObject.title);
holder.imgIcon.setImageResource(memberListObject.icon);
返回行;
}
静态类风挡
{
ImageView imgIcon;
TextView-txtTitle;
}
}

所以我的问题是,为什么当我声明/使用第二种方式而不是第一种方式时,我的应用程序可能会崩溃?非常感谢

创建数组时,不会自动创建成员。你必须自己做

MemberListObject[] memberListObject_data= new MemberListObject[5];
memberListObject_data[0] = new MemberListObject();
memberListObject_data[1] = new MemberListObject();
memberListObject_data[2] = new MemberListObject();
memberListObject_data[3] = new MemberListObject();
memberListObject_data[4] = new MemberListObject();
还是带一个环

for(int i = 0; i < memberListObject_data.length; i++){
    memberListObject_data[i] = new MemberListObject();
}
for(int i=0;i
请发布stacktrace.njzk2,我可以发誓我已经尝试过了,但现在已经解决了我的问题谢谢!感谢您这么快的回复,我忘了提到我也尝试过使用这个“MemberListObject[]MemberListObject_data=new MemberListObject[5];MemberListObject_data[0]=new MemberListObject(R.drawable.icon_phikeia,“Chocolate”);“当然,您必须初始化所有五个对象,而不仅仅是第一个。如果你这样做,你会得到同样的异常吗?发布异常stacktrace,如果没有它,很难知道发生了什么。
for(int i = 0; i < memberListObject_data.length; i++){
    memberListObject_data[i] = new MemberListObject();
}