Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Android 在可展开列表视图的子视图中设置图像时出现空指针异常_Android_Adapter_Expandablelistview_Expandablelistadapter - Fatal编程技术网

Android 在可展开列表视图的子视图中设置图像时出现空指针异常

Android 在可展开列表视图的子视图中设置图像时出现空指针异常,android,adapter,expandablelistview,expandablelistadapter,Android,Adapter,Expandablelistview,Expandablelistadapter,我在child.bg[I]=bground[0]行中得到一个Null指针异常。我正在尝试在子项的ImageView中设置图像。我在子项布局中有一个ImageView和TextView。以下是在可扩展列表视图中填充数据的代码 List<GroupItem> items = new ArrayList<GroupItem>(); int[] bground ={R.drawable.hawamahal,R.drawable.tajmahal,R.drawable.m

我在
child.bg[I]=bground[0]行中得到一个
Null指针异常
。我正在尝试在子项的
ImageView
中设置图像。我在子项布局中有一个
ImageView
TextView
。以下是在
可扩展列表视图中填充数据的代码

List<GroupItem> items = new ArrayList<GroupItem>();

    int[] bground ={R.drawable.hawamahal,R.drawable.tajmahal,R.drawable.mysorepalace};
    // Populate our list with groups and it's children
    for(int i = 0; i < 3; i++) {
        GroupItem item = new GroupItem();

        switch(i){

            case 0: item.title = "Western India";
            {
                    ChildItem child = new ChildItem();
                    child.title = getString(R.string.WestDescription);
                   child.bg[i] = bground[0];
                    item.items.add(child);
            }
                break;
            case 1: item.title = "Northern India";
            {
                ChildItem child = new ChildItem();
                child.title = getString(R.string.NorthDescription);
                child.bg[i] = bground[1];

                item.items.add(child);

            }
                break;
            case 2: item.title = "Southern India";
            {
                    ChildItem child = new ChildItem();
                    child.title = getString(R.string.SouthDescription);
                child.bg[i] = bground[2];
                    item.items.add(child);

            }

                break;


        }
        items.add(item);
    }
List items=new ArrayList();
int[]bground={R.drawable.hawamahal,R.drawable.tajmahal,R.drawable.mysorepaluage};
//用组及其子项填充我们的列表
对于(int i=0;i<3;i++){
GroupItem=新的GroupItem();
开关(一){
案例0:item.title=“西印度”;
{
ChildItem child=新的ChildItem();
child.title=getString(R.string.WestDescription);
child.bg[i]=bground[0];
item.items.add(子项);
}
打破
案例1:item.title=“北印度”;
{
ChildItem child=新的ChildItem();
child.title=getString(R.string.NorthDescription);
child.bg[i]=bground[1];
item.items.add(子项);
}
打破
案例2:item.title=“南印度”;
{
ChildItem child=新的ChildItem();
child.title=getString(R.string.southsdescription);
child.bg[i]=bground[2];
item.items.add(子项);
}
打破
}
项目。添加(项目);
}
`

以及适配器和支架的代码

private static class GroupItem {
    String title;
    List<ChildItem> items = new ArrayList<ChildItem>();
}

private static class ChildItem {
    String title;
    int[]  bg;

}

private static class ChildHolder {
    TextView title;
    ImageView  childimage;
}

private static class GroupHolder {
    TextView title;

}

/**
 * Adapter for our list of {@link GroupItem}s.
 */
private class ExampleAdapter extends AnimatedExpandableListView.AnimatedExpandableListAdapter {
    private LayoutInflater inflater;

    private List<GroupItem> items;

    public ExampleAdapter(Context context) {
        inflater = LayoutInflater.from(context);
    }

    public void setData(List<GroupItem> items) {
        this.items = items;
    }

    @Override
    public ChildItem getChild(int groupPosition, int childPosition) {
        return items.get(groupPosition).items.get(childPosition);
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public View getRealChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildHolder holder;
        int[] bg={R.drawable.taj};
        ChildItem item = getChild(groupPosition, childPosition);
        if (convertView == null) {
            holder = new ChildHolder();
            convertView = inflater.inflate(R.layout.list_item, parent, false);
            holder.title = (TextView) convertView.findViewById(R.id.textTitle);
            holder.childimage= (ImageView) convertView.findViewById(R.id.ChildImageView);
            convertView.setTag(holder);
        } else {
            holder = (ChildHolder) convertView.getTag();
        }
        holder.title.setText(item.title);
        holder.childimage.setImageResource(bg[groupPosition]);


        return convertView;
    }

    @Override
    public int getRealChildrenCount(int groupPosition) {
        return items.get(groupPosition).items.size();
    }

    @Override
    public GroupItem getGroup(int groupPosition) {
        return items.get(groupPosition);
    }

    @Override
    public int getGroupCount() {
        return items.size();
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupHolder holder;
        GroupItem item = getGroup(groupPosition);
        if (convertView == null) {
            holder = new GroupHolder();
            convertView = inflater.inflate(R.layout.group_item, parent, false);
            holder.title = (TextView) convertView.findViewById(R.id.textTitle);
            convertView.setTag(holder);
        } else {
            holder = (GroupHolder) convertView.getTag();
        }
        holder.title.setText(item.title);

        return convertView;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public boolean isChildSelectable(int arg0, int arg1) {
        return true;
    }


}
private静态类GroupItem{
字符串标题;
列表项=新建ArrayList();
}
私有静态类ChildItem{
字符串标题;
int[]bg;
}
私有静态类儿童持有者{
文本视图标题;
图像查看儿童图像;
}
私有静态类GroupHolder{
文本视图标题;
}
/**
*用于我们的{@link GroupItem}列表的适配器。
*/
私有类ExampleAdapter扩展AnimatedExpandableListView.AnimatedExpandableListAdapter{
私人充气机;
私人清单项目;
公共示例适配器(上下文){
充气器=充气器。从(上下文);
}
公共无效设置数据(列表项){
这个项目=项目;
}
@凌驾
公共子项getChild(int-groupPosition,int-childPosition){
返回items.get(groupPosition).items.get(childPosition);
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
@凌驾
公共视图getRealChildView(int-groupPosition、int-childPosition、boolean-isLastChild、视图转换视图、视图组父视图){
儿童持有人;
int[]bg={R.drawable.taj};
ChildItem item=getChild(groupPosition,childPosition);
if(convertView==null){
holder=新的儿童holder();
convertView=充气机。充气(R.layout.list_项,父项,false);
holder.title=(TextView)convertView.findViewById(R.id.textTitle);
holder.childimage=(ImageView)convertView.findViewById(R.id.ChildImageView);
convertView.setTag(支架);
}否则{
holder=(ChildHolder)convertView.getTag();
}
holder.title.setText(项目名称);
holder.childimage.setImageResource(bg[groupPosition]);
返回视图;
}
@凌驾
公共整数getRealChildrenCount(整数组位置){
return items.get(groupPosition.items.size();
}
@凌驾
public GroupItem getGroup(int groupPosition){
返回项目。获取(groupPosition);
}
@凌驾
public int getGroupCount(){
返回items.size();
}
@凌驾
公共长getGroupId(int-groupPosition){
返回组位置;
}
@凌驾
公共视图getGroupView(int groupPosition、布尔isExpanded、视图convertView、视图组父级){
股东;
GroupItem item=getGroup(groupPosition);
if(convertView==null){
holder=新的GroupHolder();
convertView=充气机。充气(R.layout.group_项,父项,false);
holder.title=(TextView)convertView.findViewById(R.id.textTitle);
convertView.setTag(支架);
}否则{
holder=(GroupHolder)convertView.getTag();
}
holder.title.setText(项目名称);
返回视图;
}
@凌驾
公共布尔表ID(){
返回true;
}
@凌驾
公共布尔值isChildSelectable(int arg0,int arg1){
返回true;
}
}

我是android开发的新手,如果您需要任何进一步的细节,请告诉我。在这里,我试图从ChildItem的ImageView中的drawable文件夹设置一个图像。如果有其他方法,请告诉我。提前感谢。

您未能在ChildItem类中初始化child.bg[]数组。
按如下方式更改代码:

 ChildItem child = new ChildItem();
 child.title = getString(R.string.WestDescription);
 child.bg[] = new int[3]; // <----- initiliaze bg[] arrays
 child.bg[i] = bground[0];
 item.items.add(child);
ChildItem child=new ChildItem();
child.title=getString(R.string.WestDescription);

child.bg[]=新整数[3];//标记发生异常的行。