Не удалось выбрать строку в списке в раскрывающемся списке 4.1, но работает в android 5.0

У меня есть всплывающее окно на моей странице с списком. Я создал дизайн всплывающего окна в отдельном xml и загрузил его на одной из кнопок на моей главной странице. Всплывающее окно имеет список с каждой строкой, имеющей изображение и текстовое представление. Я не могу получить выбор строки в listview в android 4.1, но он работает в версии 5.0. Может ли кто-нибудь предложить мне решение? Посмотреть список:

<ListView android:id="@+id/lstSites" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fastScrollEnabled="true" android:layout_margin="5dp" android:descendantFocusability="blocksDescendants"></ListView> </LinearLayout> 

Элемент списка:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants" android:focusable="false" android:focusableInTouchMode="false"> <ImageView android:id="@+id/thumbImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:focusable="false" android:focusableInTouchMode="false"/> <TextView android:id="@+id/tvSite" android:textSize="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="Name" android:focusable="false" android:focusableInTouchMode="false"/> 

Добавление перечислителя строк:

 lstSiteMenu = (ListView) popupView.findViewById(R.id.lstSites); adapter = new MenuItemsAdapter(SiteActivity.this, arrMenu); // Attach the adapter to a ListView lstSiteMenu.setAdapter(adapter); lstSiteMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { } 

Попробуйте все решения:


 popupwindow.setFocusale(true); listView xml : "android:focusable="true" 

Не используйте lstSiteMenu.setOnItemClickListener
Вместо этого перейдите в свои адаптеры getView и добавьте

 convertView.setOnClickListener 

Надеюсь, это поможет вам!

Удалить это свойство из списка, android:descendantFocusability="blocksDescendants" и

 android:focusable="false" android:focusableInTouchMode="false" 

Из текста и изображения.

И попробуйте Это пример примера,

 String names[] ={"A","B","C","D"}; AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); LayoutInflater inflater = getLayoutInflater(); View convertView = (View) inflater.inflate(R.layout.row_file, null); alertDialog.setView(convertView); alertDialog.setTitle("List"); ListView lv = (ListView) convertView.findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names); lv.setAdapter(adapter); alertDialog.show(); 

В противном случае ваш код в порядке. оно работает.

Перейдите по этой ссылке для получения более подробной информации.

Другая официальная ссылка для этого же.

Вам нужно удалить android:descendantFocusability="blocksDescendants" из вашего ListView .

Также удалите android:focusable="false" и android:focusableInTouchMode="false" из вашего макета строки в ImageView и TextView .

Элемент списка должен быть кликабельным, отключить его получение фокуса

Установить строку onclick listener в классе адаптера

 public class MenuItemsAdapter extends Base Adapter{ @Override public View getView(final int position, View convertView, ViewGroup parent) { /* Paste your adapter code */ customView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.v("log", "You clicked at pos "+position); } }); } } 

Этот код работал во всех версиях sdk.

Также удалите эти свойства из xml-файлов

 android:descendantFocusability="blocksDescendants" android:focusable="false" android:focusableInTouchMode="false"