2009-11-11 55 views
1

我有一个问题,同时尝试在 PopupWindow中使用GridView。在我活动的onCreate方法,我膨胀XML格式的 GridView控件如下:PopupWindow与GridView - 与膨胀视图的问题

LayoutInflater inflater = (LayoutInflater)this.getSystemService 
(Context.LAYOUT_INFLATER_SERVICE); 
final GridView popupview = (GridView) inflater.inflate 
(R.layout.gridviewpopup, null, false); 
popupview.setAdapter(new ImageAdapter(this)); 

想这个GridView控件上的一个按钮,单击弹出。此外 我活动的onCreate里面,我有:

final Button addButton = (Button) findViewById(R.id.add); 
addButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    PopupWindow mwindow = new PopupWindow(popupview, 100, 100); 
    mwindow.showAtLocation(findViewById(R.id.main), Gravity.CENTER, 100, 100); 
    mwindow.setFocusable(true); 
      } 
}); 

在按一下按钮,我从 GridView.onMeasure(INT,INT)抛出一个ClassCastException。

任何人都可以请我解释我做错了什么?

+0

您是否考虑过将GridView添加到Popupwindows主布局,并将setVisibility属性设置为GONE?然后在需要时将其设置为可见。这样你就不必担心手动膨胀视图。 – Ralphleon 2009-11-11 23:17:35

回答

1

我最终发现了问题。我正在使用来自Hello,Gallery示例的ImageAdapter代码 。包含的代码行 引用GALLARY:

imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); 

当一个GridView使用,这显然会导致类投 例外。

现在我的GridView正常显示在popupwindow中,我 在捕获OnItemClick事件时遇到了问题。以下是我的代码。 当我在弹出窗口中的 gridview中进行选择时,从不会调用OnItemClick。有任何想法吗?

final GridView gView = (GridView) grid_layout.findViewById 
(R.id.gridview_layout); 
gView.setWillNotDraw(false); 
gView.setFocusableInTouchMode(true); 
gView.setClickable(true); 
gView.setAdapter(new ImageAdapter(this)); 

final PopupWindow soundSelectorWindow = new PopupWindow(this); 
soundSelectorWindow.setContentView(grid_layout); 
soundSelectorWindow.setBackgroundDrawable(new BitmapDrawable()); 
soundSelectorWindow.setOutsideTouchable(false); 
soundSelectorWindow.setTouchable(true); 

gView.setOnItemClickListener(new OnItemClickListener() 
    { 
    public void onItemClick(AdapterView parent, View v, int position, 
long id) 
     { 
     //Never gets here. 
     soundSelectorWindow.dismiss(); 
     } 
}); 
+0

这是答复或问题??? – 2013-11-14 11:24:07