0

图书馆:

我想用 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;
    }

然后它什么也不显示,也没有错误。

4

2 回答 2

0

addView()onMergeAdapter专为ListView标题等而设计。相反,您正试图将 aGridView作为元素放在AdapterView使用MergeAdapter. 不支持这一点MergeAdapter,并且无论您如何尝试将其GridView放入另一个内部都不太可能起作用。AdapterView

另外,我不建议使用Adapterbe static当然也不建议使用 a MergeAdapter,因为它会导致严重的内存泄漏(并且首先是不必要的)。

于 2013-08-13T00:04:06.803 回答
0

你的问题很笼统。正如你的代码

private static MergeAdapter adapter = null;
adapter.addView(buildlabel3(context));

适配器为空,未初始化。所以无论你添加什么,它仍然是空的。

我看过 MergeAdapter 的源代码。它有一个构造函数:

public MergeAdapter() {
    super();
}

所以只需将您的代码更改为

private static MergeAdapter adapter = new MergeAdapter();
adapter.addView(buildlabel3(context));

然后再试一次。

于 2013-08-13T00:16:56.377 回答