Java Android:通过单个GridView适配器调用另一个GridView适配器
首先,我在GridView上填充一个ArrayList。在该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
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
。我认为,在另一个适配器中创建适配器是一种糟糕的方法,但我没有找到这方面的来源。