Android 将适配器与Gridview合并
库:Android 将适配器与Gridview合并,android,gridview,commonsware-cwac,Android,Gridview,Commonsware Cwac,库: plv = (PullToRefreshListView) LayoutInflater.from(context).inflate( R.layout.layout_listview_in_viewpager, container, false); adapter = new MergeAdapter(); sadapter = new StaggeredAdapter(BaseSampleActivity.this, R.id.imageView
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;
}
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;
}
然后它就像一个列表视图
第二种方式,如果构建视图:
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;
}
然后它不会显示任何内容,也不会出现错误。MergeAdapter
上的addView()
是为ListView
标题等而设计的。相反,您试图将GridView
作为使用MergeAdapter
的其他AdapterView
中的一个元素。这是不受MergeAdapter
支持的,将GridView
放在另一个AdapterView
中不太可能工作,无论您如何尝试
另外,我不建议将
适配器
设置为静态
,当然也不建议将合并适配器
,因为这会导致严重的内存泄漏(而且首先是不必要的)。您的问题非常普遍。就像你的代码一样
private static MergeAdapter adapter = null;
adapter.addView(buildlabel3(context));
适配器为空,未初始化。所以无论你添加什么,它仍然是空的
我已经看到了MergeAdapter的soucre代码。它有一个构造函数:
public MergeAdapter() {
super();
}
所以只需将代码更改为
private static MergeAdapter adapter = new MergeAdapter();
adapter.addView(buildlabel3(context));
然后再试一次 我被你所说的“它什么都没有显示”搞糊涂了。新的视图没有显示,还是原始视图也消失了?屏幕是完全空白的吗?它不会生成视图,因此视图不会出现。那么你的意思是说,不可能让mergeAdapter与grid view一起工作,或者说我做错了?@Marckaraujo:将
mergeAdapter
与GridView
一起使用的方法是在GridView
上调用setAdapter()
,传入MergeAdapter
。我没有尝试过这个,但我似乎记得其他人也尝试过,而且它是有效的。但是,这并不是您在第二段代码中要做的事情。我现在理解了我在PullToRefreshListView上使用setAdapter()传递MergeAdapter的问题。所以我用mergeAdapter构建了一些视图,然后将其设置为PullToRefreshListView。我知道,我只是裁剪了我的代码,没有多少信息来关注这个问题。在我的原始代码中,我使用adapter=newmergeadapter();,反正是thx