2014-11-10 7 views
0

Я использую собственный адаптер и макет для моего представления. Элементы списка пользовательского вида имеют в нем разные кнопки, которые работают без каких-либо проблем. Тем не менее, я хочу выбрать каждый элемент списка и вызывать CAB при длительном нажатии. По какой-то причине CAB не появляется, когда я использую его с моим пользовательским представлением. Однако, если я раскомментирую строку для использования адаптера String Array, тогда он отлично работает.ListView CAB не отображается при длинном нажатии

String[] ITEMS = new String[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6" };  
datasource = new FavoritesDataSource(this); 
datasource.open(); 
tempList = datasource.getAllFavorites(); 
myAdapter = new FavoritesArrayAdapter(this, tempList); 
datasource.close(); 

ListView lv = getListView(); 
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
lv.setMultiChoiceModeListener(new ModeCallback()); 

setListAdapter(myAdapter); 
//setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_activated_1, ITEMS)); 

Я не уверен, что я делаю неправильно. Любая помощь будет оценена. Спасибо

ответ

0

После многих часов отладки проблема вышла очень просто. При использовании пользовательского адаптера с вашим пользовательским списком с помощью кнопок с кнопками внутри него просмотр списка отключает его возможность щелкнуть элемент родительского элемента ListView и не позволяет выбрать элемент или элемент родительского списка. В вашем custom_list_view_item.xml вам нужно добавить этот атрибут для родительского вида

android:descendantFocusability="blocksDescendants" 

Это позволит Родитель ListView Item быть интерактивным, и вы можете нажать дочерние элементы в вашей ListView Пункте тоже. Надеюсь, поможет.