2015-12-21 2 views
3

Я разрабатываю приложение для Android для ресторана для системы заказа продуктов.
В моем проекте, у меня есть Gridview, когда нажмите на button по данному вопросу в GridView, я хочу, чтобы получить всплывающее окно с некоторыми TextFields, кнопки и т.д.Создать всплывающее окно для каждого элемента gridview - Android

я получил помощь от this document example

выше пример документа работает как одиночное приложение. Это просто пример создания основного всплывающего окна. Но мне это нужно на Gridview.

my work -->

вместо main.xml и PopUpWinndowDemoActivity.java (это основной вид деятельности) выше Дока, я использую мой grid_single.xml и это implementation file Grid_single.java.

Но это не работает для меня. Когда я нажимаю на кнопку каждого элемента, не показывая всплывающее окно, как я надеюсь. Итак, Пожалуйста, помогите мне решить эту проблему или дать мне рабочий пример для всплывающих окон на элементах сетки. Я приложил свои файлы к этому. ждет вас, Спасибо!

Grid_single.java

Button btnClosePopup; 
    Button btnCreatePopup; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.grid_single); 
     btnCreatePopup = (Button) findViewById(R.id.addToCart); 
     btnCreatePopup.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       initiatePopupWindow(); 
      } 
     }); 


     btnCreatePopup.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       initiatePopupWindow(); 
      } 
     }); 

    } 

    private PopupWindow pwindo; 
    private void initiatePopupWindow() { 
     try { 
      // We need to get the instance of the LayoutInflater 
      LayoutInflater inflater = (LayoutInflater) Grid_Single_Popup.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View layout = inflater.inflate(R.layout.screen_popup, (ViewGroup) findViewById(R.id.popup_element)); 
      pwindo = new PopupWindow(layout, 300, 370, true); 
      pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0); 

      btnClosePopup = (Button) layout.findViewById(R.id.btn_close_popup); 
      btnClosePopup.setOnClickListener(cancel_button_click_listener); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private OnClickListener cancel_button_click_listener = new OnClickListener() { 
     public void onClick(View v) { 
      pwindo.dismiss(); 

     } 
    }; 

grid_single.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_marginTop="15dp" 
       android:padding="5dp" 
       android:id="@+id/grid_single_back" 
     > 
    <ImageView 
      android:id="@+id/grid_image" 
      android:layout_width="150dp" 
      android:layout_height="150dp"> 
    </ImageView> 

    <TextView 
      android:id="@+id/grid_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="2dp" 
      android:textSize="24dp" > 
    </TextView> 
    <Button 
      style="?android:attr/buttonStyleSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="35dp" 
      android:text="Cutomize &amp; Add" 
      android:id="@+id/addToCart" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="5dp" 
      android:layout_marginRight="5dp" 
      android:textSize="18dp" 
      android:padding="5sp"/> 

</LinearLayout> 

Заранее спасибо

+0

http://codex2android.blogspot.in/2015/ 11/popupwindow-with-image-and-text-android.html, используйте это как ссылку и делайте дизайн и внедряйте в адаптер. – HourGlass

+0

Посмотрите здесь http://developer.android.com/guide/topics/ui /layout/gridview.html –

+0

У меня нет проблем с gridview. моя проблема заключается в всплывающем окне на gridview. –

ответ

3

Это работает для меня, проверьте один раз

В адаптере сетки:

public CustomGrid(String[] web, int[] Imageid, Grid_single activity) { 
    this.Imageid = Imageid; 
    this.web = web; 
    this.activity = activity; 
} 

В методе GetView вашего адаптера, держать так:

grid = inflater.inflate(R.layout.grid_single, null); 
TextView textView = (TextView) grid.findViewById(R.id.grid_text); 
ImageView imageView = (ImageView) grid.findViewById(R.id.grid_image); 
Button btnPopup = (Button) grid.findViewById(R.id.btnPopup); 
btnPopup.setOnClickListener(activity); 

Grid_single должны осуществлять OnClickListener, и держать так:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.btnPopup: 
     initiatePopupWindow(web[grid.getPositionForView(v)]); 
     break; 
    default: 
     break; 
    } 
} 
+0

привет, можете ли вы прислать мне ваш рабочий пример? –

+1

Я сохранил свой пример кода на 'http://hastebin.com/qeloveyufu.avrasm', проверяя это и дайте мне знать в случае каких-либо сомнений. – Srikanth

+1

Спасибо за образец кода, я получил от него помощь. –

Смежные вопросы