库:
我想用MergeAdapter添加gridview适配器。
第一种方式,如果设置适配器:
plv = (PullToRefreshListView) LayoutInflater.from(context).inflate(
R.layout.layout_listview_in_viewpager, container, false);
adapter = new MergeAdapter();
sadapter = new StaggeredAdapter(BaseSampleActivity.this, R.id.imageView1, urls);
adapter.addAdapter(sadapter);
plv.setAdapter(adapter);
然后它就像列表视图一样工作。
第二种方式,如果您构建视图:
plv = (PullToRefreshListView) LayoutInflater.from(context).inflate(
R.layout.layout_listview_in_viewpager, container, false);
adapter = new MergeAdapter();
adapter.addView(buildlabel3(context));
plv.setAdapter(adapter);
public View buildlabel3(Context context) {
// TODO Auto-generated method stub
RelativeLayout v = (RelativeLayout)LayoutInflater.from(context).inflate(R.layout.activity_main, null);
StaggeredGridView gridView = (StaggeredGridView) v.findViewById(R.id.staggeredGridView1);
int margin = getResources().getDimensionPixelSize(R.dimen.margin);
gridView.setItemMargin(margin); // set the GridView margin
gridView.setPadding(margin, 0, margin, 0); // have the margin on the sides as well
StaggeredAdapter sadapter = new StaggeredAdapter(BaseSampleActivity.this, R.id.imageView1, urls);
gridView.setAdapter(sadapter);
sadapter.notifyDataSetChanged();
Log.e("view", v.toString());
return v;
}
然后它没有显示任何内容且没有错误。
答案 0 :(得分:0)
addView()
上的 MergeAdapter
专为ListView
标题等设计。相反,您试图将GridView
作为元素放在使用AdapterView
的其他MergeAdapter
内。 MergeAdapter
不支持,GridView
将AdapterView
置于另一个Adapter
内,无论您如何尝试,都不太可能。{/ p>
此外,我不建议将static
设为MergeAdapter
,而当然不是{{1}},因为它会代表显着的内存泄漏(以及首先是没有必要的。)
答案 1 :(得分:0)
你的问题很通用。与您的代码一样
private static MergeAdapter adapter = null;
adapter.addView(buildlabel3(context));
适配器为null,未初始化。所以无论你添加什么,它仍然是空的。
我见过MergeAdapter的soucre代码。它有一个构造函数:
public MergeAdapter() {
super();
}
所以只需将代码更改为
即可private static MergeAdapter adapter = new MergeAdapter();
adapter.addView(buildlabel3(context));
然后再试一次。