PopupWindow с GridView - проблема с раздувающимся видом

1

У меня возникла проблема при попытке использовать GridView в Всплывающее окно. В моем методе ActivityCreatate я раздуваю gridview из xml следующим образом:

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);  
            }  
 }); 

При нажатии на кнопку я бросаю ClassCastException из GridView.onMeasure(int, int).

Может кто-нибудь объяснить мне, что я делаю неправильно?

  • 0
    Рассматривали ли вы добавление вида сетки к основному макету Popupwindows и присвоение атрибуту setVisibility значения GONE? Затем установите его снова видимым, когда это необходимо. Таким образом, вам не придется беспокоиться о том, чтобы вручную надувать вид.
Теги:
gridview
popupwindow

1 ответ

1
Лучший ответ

В итоге я нашел проблему. Я использовал код ImageAdapter сформируйте пример Hello, Gallery. Это содержало строку кода ссылаясь на Галлари:

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

При использовании с GridView это явно вызывает класс исключение.

Теперь, когда я правильно показываю свой GridView в всплывающем окне, я не имея проблем с захватом события OnItemClick. Ниже мой код. OnItemClick никогда не вызывается, когда я делаю выбор в своем gridview в popupwindow. Любые идеи?

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
    Это ответ или вопрос ???

Ещё вопросы

Сообщество Overcoder
Наверх
Меню