Java Android:通过单个GridView适配器调用另一个GridView适配器

Java Android:通过单个GridView适配器调用另一个GridView适配器,java,android,gridview,mobile,android-adapter,Java,Android,Gridview,Mobile,Android Adapter,首先,我在GridView上填充一个ArrayList。在该GridView中,我需要在另一个GridView上填充更多数据。基本上从第一个适配器调用第二个适配器 到目前为止,我的代码是: public class ProductGridInflator extends ArrayAdapter<Product>{ ArrayList<Image> dbImages = new ArrayList<Image>(); GridView

首先,我在GridView上填充一个ArrayList。在该GridView中,我需要在另一个GridView上填充更多数据。基本上从第一个适配器调用第二个适配器

到目前为止,我的代码是:

    public class ProductGridInflator extends ArrayAdapter<Product>{
    ArrayList<Image> dbImages = new ArrayList<Image>();
    GridView multiplePics;
    Context ctx;
    public ProductGridInflator(Context context, int resource,ArrayList<Product> objects, ArrayList<Image> obj) {
            super(context, resource, objects);
            // TODO Auto-generated constructor stub
            this.dbProducts = objects;
            this.ctx = context;
            this.resource = resource;
            this.dbImages = obj;
        }

    @Override
        public View getView(final int position, View convertView, final ViewGroup parent) {
            // TODO Auto-generated method stub
            View child = convertView;
            final RecordHolder holder;
            LayoutInflater inflater = ((Activity) ctx).getLayoutInflater(); // inflating your xml layout

            if (child == null) {            
                child = inflater.inflate(R.layout.grid_single, parent, false);
                multiplePics = (GridView) child.findViewById(R.id.moreImagesGrid);
             }

    if(dbImages.size() > 1)
    {
        OtherImagesAdapter adapter = new OtherImagesAdapter(ctx, R.layout.grid_single, dbImages);
        multiplePics.setAdapter(adapter);
    }
  return child;
}
公共类ProductGridInflator扩展了ArrayAdapter{
ArrayList dbImages=新的ArrayList();
GridView多重史诗;
上下文ctx;
公共产品GridInflator(上下文上下文、int资源、ArrayList对象、ArrayList对象){
超级(上下文、资源、对象);
//TODO自动生成的构造函数存根
this.dbProducts=对象;
this.ctx=上下文;
这个资源=资源;
this.dbImages=obj;
}
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图){
//TODO自动生成的方法存根
视图子对象=转换视图;
最终记录保持者;
LayoutInflater充气器=((活动)ctx).getLayoutInflater();//充气xml布局
如果(child==null){
子项=充气机。充气(R.layout.grid_单个,父项,false);
multiplePics=(GridView)child.findViewById(R.id.moreImagesGrid);
}
如果(dbImages.size()>1)
{
OtherImagesAdapter=新的OtherImagesAdapter(ctx,R.layout.grid_single,dbImages);
multiplePics.setAdapter(适配器);
}
返回儿童;
}

理论上这是正确的。这似乎不起作用。代码有什么问题吗?

变量dbImages在哪里?您是否缺少
private ArrayList obj;
?是的,我已经声明了这些,我没有将它们添加到问题中。如果我将Log.d添加到dbImages.size()中,我会得到正确的图像数(count)还有,只是它没有到达适配器或者@Vojtaaa9I认为在getView()中创建一个新的适配器方法是个坏主意。首先,它会被多次调用,这意味着您多次创建这个大对象,这可能会导致
OutOfMemory
错误。第二,您无法管理适配器或gridView。如果您绘制一个模式或截图并进行一些解释,我将能够帮助您。通常,您可以在
片段中设置它/
Activity
。我认为,在另一个适配器中创建适配器是一种糟糕的方法,但我没有找到这方面的来源。