2015-08-18 5 views
1

Я хочу показать popupwindow, у которого есть Listview, и когда я нажимаю над списком, сделайте что-нибудь. Чтобы упростить мою проблему, я сделал следующий пример, где он показывает проблему: ítem click on listview не работает.ListView OnItemClickListener на PopupWindow не работает (Android)

Моего popupwindow пользовательского макет:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tvName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="15dp" 
     android:textStyle="bold" 
     android:gravity="center"/> 

    <ListView 
     android:layout_marginRight="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="5dp" 
     android:layout_width="wrap_content" 
     android:layout_height="110dp" 
     android:id="@+id/lvData" 
     android:headerDividersEnabled="false" /> 

    <ImageButton 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:id="@+id/ibInfo" 
     android:layout_gravity="center" 
     android:src="@android:drawable/ic_menu_info_details"/> 

Моей карта деятельность, где я показываю Popupwindow:

public void onButtonClick(View view){ 
     mPopupView = getLayoutInflater().inflate(R.layout.popupwindow_custom_layout, null); 
     TextView tvName = (TextView) mPopupView.findViewById(R.id.tvName); 
     ListView lvData = (ListView) mPopupView.findViewById(R.id.lvData); 
     ImageButton ibInfo = (ImageButton) mPopupView.findViewById(R.id.ibInfo); 
     TextView txtListTitle = new TextView(this); 
     ibInformacion.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       System.out.println("click on button"); 
      } 
     }); 
     txtListTitle.setText("List Title"); 
     listaLineas.addHeaderView(txtListTitle); 
     ArrayList<String> list = new ArrayList<>(); 
     tvNombre.setText("Main Title"); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, list); 
     adapter.add("Test 1"); 
     adapter.add("Test 2"); 
     adapter.add("Test 3"); 
     adapter.add("Test 4"); 
     adapter.add("Test 5"); 
     adapter.add("Test 6");  

     lvData.setAdapter(adapter); 

     lvData.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       System.out.println("Click on list item"); 
      } 
     }); 
     PopupWindow popupWindow = new PopupWindow(mPopupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     mPopupWindow.showAtLocation(this, Gravity.CENTER, 0, 0); 
} 

Почему ibInfo-х setOnClickListener работает отлично, но lvData-х setOnItemClickListener (ни setOnClickListener) ничего не делает? Что мне не хватает? (Прокрутка списка работает отлично)

Примечание: Я не могу установить mPopupWindow.setFocusable(true), потому что я потеряю щелчки по карте (onMapClick, onCameraChange и т.д.).

ответ

0

попытаться добавить это в ListView

android:descendantFocusability="blocksDescendants" 

Надеется, что это будет исправить это!

+1

Нет, не решение –