2009-11-11 2 views
1

PopupWindow에서 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 방법에, 나는 XML에서 있는 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

당신은 Popupwindows 메인 레이아웃에 gridview를 추가하고 setVisibility 속성을 GONE으로 설정 하시겠습니까? 그런 다음 필요할 때 다시 표시되도록 설정하십시오. 이 방법을 사용하면 수동으로보기를 팽창시킬 염려가 없습니다. – Ralphleon

답변

1

문제를 발견했습니다. Hello, Gallery 예제 ImageAdapter 코드 을 사용하고있었습니다.

의 GridView와 함께 사용
imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); 

, 이것은 분명히 클래스 캐스트 예외가 발생합니다 : 그건 GALLARY를 참조 코드 의 라인이 포함되어 있습니다.

이제 GridView가 팝업 창에 제대로 표시되도록하기 위해 OnItemClick 이벤트 캡처에 문제가있는 입니다. 아래는 제 코드입니다. popupwindow의 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

이것은 답변 또는 질문입니까 ??? –

관련 문제