GridView:Adapter.getView()从不调用

时间:2010-08-06 16:13:31

标签: android xml gridview layout

在制作自定义视图列表时,我遇到了一件奇怪的事情。我有两个ListView使用相同的适配器显示相同的数据。其中一个是从XML中膨胀而另一个是在另一个Activity中以编程方式创建的,因为它根据触摸事件显示/隐藏。他们在两种情况下都有效。后来我用GridViews替换了ListViews(使用搜索/替换),但只有膨胀的那个从那一点开始工作。以编程方式创建的那个在GridView.layoutChildren()中抛出NullPointerException,并且我的Adapter.getView()永远不会被调用,尽管适配器按预期填充。我无法克服那个例外,任何想法?

膨胀的GridView效果很好(Activity.onCreate()):

mListColours = (GridView) findViewById(R.id.listColours);
mAdapter = new ColourViewAdapter(this, R.layout.colour, Palette.getColours());
mListColours.setAdapter(mAdapter);

ViewGroup的构造函数中的另一个GridView:

mColourList = new GridView(context);
mAdapter = new ColourViewAdapter(context, R.layout.colour,Palette.getColours());
mColourList.setAdapter(mAdapter);
(...)
addView(mColourList);

此处抛出异常(在ViewGroup中):

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
  (...)
  gv = (GridView) child;
  gv.layout(0, 0, r, getMeasuredHeight()); // NullPointerException
  (...)
}

0 个答案:

没有答案