Возможно ли использовать OnItemClickListener в ListView, когда макет Items имеет интерактивный/редактируемый виджет (RadioButton, EditText или CheckBox)?ListView с интерактивным/редактируемым виджетами
ответ
Возможно, вы захотите взглянуть на this issue. Наличие фокусного элемента в строке ListView
приводит к тому, что OnItemClickListener
НЕ будет вызываться. Тем не менее, это не значит, что вы не можете иметь объекты с возможностью фокусировки/клики в строке, есть некоторые обходные пути, такие как this one.
Кроме того, вы можете посмотреть экран «Журналы вызовов». У этого есть ListView
с clickable пунктом (значок вызова справа). See Source code here
Быстрая помощь: «Простой способ обойти эту проблему - позвонить » setDescendantFocusability (FOCUS_BLOCK_DESCENDANTS); » в представлении listView по мере их добавления. Вы сможете выбрать строки, щелкнуть по строкам и нажать на дочерние флажки и кнопки. " - Это цитата из комментария № 27 на странице, на которую ссылаются две ссылки в ответе выше. Спасибо!! –
Ссылка на обходной путь 1 не работает. Может кто-нибудь отредактировать это? – Martze
только первая ссылка работает, остальные сломаны, пожалуйста, исправьте, что – BBdev
Цитирование комментарий # 31 в ссылке, упомянутой Samuh (который решал проблему для меня):
На самом деле вы можете добавить его в макет XML (если завышены один): андроид: descendantFocusability = "blocksDescendants".
Добавить здесь JIC, что веб-страница не работает в будущем.
Если какой-либо элемент строки списка содержит фокусный или кликабельный вид, то OnItemClickListener
не будет работать.
элемент строки должен быть с параметрами, как android:descendantFocusability="blocksDescendants"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >
// your other widgets here
</LinearLayout>
перепробовал много комплексных решений, но это было самым простым, что работало:
андроида: фокусируемый = "ложь"
<CheckBox
android:id="@+id/fav_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false" />
Два лучших решения
- Добавить
android:descendantFocusability="beforeDescendants"
в ListView в XML ИЛИ - Набор данного два атрибута
false
как
android:focusable="false"
android:focusableInTouchMode="false"
Затем он будет обрабатывать пункт ListView строки ребенка (кнопка, EditText и т. д.) вместо listView.setOnItemClick.
Я исправил моя проблема отличается, в моем пункте у меня есть более чем один LinearLayout , так что если вы даете идентификатор к вашему linearayout и setOnclickListener в адаптер класса он будет работать, только оригинальный эффект прикосновения будет ива. но эта ссылка Making a LinearLayout act like an Button является полезным, чтобы сделать linearlaout действие кнопки как на мыши
пункт
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/txt_item_followers_name"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center|start"
android:paddingLeft="15dp"
android:text="Ali"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/imageView"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/txt_item_followers_name"
android:layout_marginLeft="10dp"
android:src="@drawable/puan_icon" />
<TextView
android:id="@+id/txt_item_followers_mark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView"
android:layout_toEndOf="@+id/imageView"
android:background="@color/red_400"
android:paddingLeft="10dp"
android:text="25.5"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:id="@+id/linear_one"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/txt_item_followers_name"
android:background="@color/red_400"
android:orientation="vertical">
<ImageView
android:id="@+id/btn_item_followers_2b_follow"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:src="@drawable/follow_buton" />
</LinearLayout>
</RelativeLayout>
внутри метода GetView
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View view = convertView;
if (convertView == null)
view = inflater.inflate(R.layout.deneme, null);
final Followers2 myObj = myList.get(position);
LinearLayout linear_one = (LinearLayout) view.findViewById(R.id.linear_one); // HERE WE DOMUNİCATE IT
linear_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(parentActivity, "One Two", Toast.LENGTH_SHORT).show();
}
});
TextView name = (TextView) view.findViewById(R.id.txt_item_followers_name);
TextView mark = (TextView) view.findViewById(R.id.txt_item_followers_mark);
final ImageView btn_follow = (ImageView) view.findViewById(R.id.btn_item_followers_2b_follow);
name.setText(myObj.getName());
mark.setText(myObj.getScore());
/* if (myObj.isFollow() == true) {
btn_follow.setImageResource(R.drawable.following_buton);
} else {
btn_follow.setImageResource(R.drawable.follow_buton);
}
btn_follow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Followers2 myObj = myList.get(position);
if (myObj.isFollow() == true) {
btn_follow.setImageResource(R.drawable.following_buton);
} else {
btn_follow.setImageResource(R.drawable.follow_buton);
}
}
});*/
return view;
}
- 1. ListView в действии с другими виджетами
- 2. Помощь с гибкими виджетами
- 3. Программа с виджетами
- 4. DrawerLayout с входными виджетами
- 5. с трудностями с управлением виджетами
- 6. проблема с виджетами веб-приложений
- 7. Android - проблема с виджетами DatePicker
- 8. Сегодня проблема с виджетами высотой
- 9. Работа с виджетами внутри Qtabwidget
- 10. Appium - Взаимодействие с пользовательскими виджетами
- 11. Django ModelForm с виджетами администратора
- 12. Задняя проблема стека с виджетами
- 13. Проблемы с виджетами в Android
- 14. Обработка Django с пользовательским виджетами
- 15. Поиск текста с виджетами javascript
- 16. Как использовать MediaBrowserService с виджетами?
- 17. QTabWidget с динамическим изменением виджетами
- 18. Проблемы с виджетами Python - Tkinter
- 19. jQuery, конфликтующий с виджетами Blogger
- 20. wxpython, управляющий виджетами с идентификатором
- 21. Qt сплиттер с пустым виджетами
- 22. Проблема с динамическим виджетами Kivy
- 23. Проблема с виджетами виджета галереи
- 24. Maximize окно с виджетами Tkinter
- 25. Отзывчивый дизайн с различными виджетами
- 26. IE Security Warning с виджетами
- 27. Модификатор метода «static» не работает с виджетами Android
- 28. с использованием HTML/CSS с виджетами Headway
- 29. Проблема с привязкой данных с виджетами Kendo
- 30. Проблема с дизайном с виджетами Zopim
Расширяет ListActivity вместо деятельности. обратитесь к http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ –