2016-04-09 3 views
0

Я создал пользовательский массив для моего списка. У него есть имя игрока и оценка, у меня также есть кнопка добавления на ячейку, когда эта кнопка нажата. Я хочу, чтобы всплывающий экран появлялся. Здесь пользователь может добавить счет игрока. Это всплывающее окно имеет 6 кнопок «+1», «+2» «+10» ..etc и кнопку «Готово». Когда нажата кнопка «Готово», счет будет обновлен.Всплывающее окно на ListView Android

Я обрабатываю событие нажатия кнопки добавления в свой класс customArraryAdapter, поэтому мне также нужно создать всплывающее окно. Я искал и пытался сделать это без успеха.

То, что я пытался до сих пор: У меня есть View = convertView и viewHolder = holder Проблема заключается в том, что я не уверен, что необходимо передать в качестве параметра для создания всплывающего окна. Ниже приведен код класса myCustomArrayAdapter. Я также читал всплывающие подсказки, которые не могут касаться событий, но некоторые говорят, что это возможно. Поскольку у моего popup есть много кнопок, возможно, это может быть отличным решением.

Это в @Override общественности Посмотреть GetView (конечное положение INT, Вид convertView, ViewGroup родителя) Метод в CustomArrayAdapter Класс

//Handle add button click 
holder.add.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     addScores(convertView); 

     //list gets updated 
     notifyDataSetChanged(); 


    } 

}); 

Мой метод addScores выглядит следующим образом enter image description here

private void addScores(View v){ 
     PopupWindow pw; 
     LayoutInflater inflater = (LayoutInflater)v.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.weight_popup, (ViewGroup)v.findViewById(R.id.linlay_weight_popup)); 
     pw = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); 
     pw.setBackgroundDrawable(new BitmapDrawable()); 
     pw.setOutsideTouchable(true); 
     pw.showAsDropDown(btnSelectWeight); 

    } 
+0

Вы можете передать контекст из адаптера. Оттуда вы можете создать объект LayoutInflator с помощью метода LayoutInflator.from (context). – Krish

+0

Можете ли вы предоставить решение с кодом? Я пробовал передать Context прямо сейчас, но я все еще получаю красный текст на getSystemService, и это правда, что не удается обработать событие touch/click во всплывающем окне? –

+0

Проверьте эту ссылку https://androidresearch.wordpress.com/2012/05/06/how-to-create-popups-in-android/ – Krish

ответ

0

Вы можете пройти Просмотр, который будет отображаться во всплывающем окне так же, как вы делать.

Рассмотрим это:

View layout = inflater.inflate(R.layout.weight_popup, (ViewGroup)v.findViewById(R.id.linlay_weight_popup)); 

Ваш макет weight_popup должен содержать 6 кнопок, которые будут иметь OnClick там вы обновляют оценки. Нечто вроде:

Button btn1 = (Button)layout.findViewById(R.id.btn1); 
btn1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        //update your score here. 
       } 
      }); 

//other buttons.. 

pw = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); 
Смежные вопросы