ВопросКак я могу обработать onListItemClick (...) на основе того, какой вид внутри строки был нажат?
У меня есть ListView внутри DialogFragment, и я хочу, чтобы огнь некоторых обратных вызовов только тогда, когда некоторые конкретные элементы внутри строк обжигают. Как я могу это сделать?
В принципе, я хочу сделать что-то вроде этого
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final int viewId = view.getId();
if ((viewId == R.id.textView1) || (viewId == R.id.textView2)) {
// do something...
}
который я не могу. Прочтите, если вы не знаете, почему.
То, что я пытался
Я попытался посмотреть в документации, но OnItemClickListener обратного вызова не предлагает в качестве параметра точно щелкнул вид (вид вы можете увидеть в подписи вся строка) ,
Кроме того, я попытался установить простой обратный вызов onClick на одном представлении в адаптере, но это переопределяет listSelector и другое поведение, которое должен иметь список. Читая в документации, я обнаружил, что явно написано, что мы должны установить обратные вызовы с помощью метода onListItemClick (...) (не через onClick (...)), поэтому я ищу способ сделать это, используя этот метод , чтобы не переопределять поведение по умолчанию в списке по умолчанию.
Я пытался сделать это, работая над xml. К моему удивлению, я обнаружил, что если я установил свойство android:clickable
в true, обратный вызов onListItemClick не будет срабатывать (я думал, что это наоборот), , поэтому частичным решением было бы установить android:clickable=true
каждый вид в строке отдельно из того, что я хочу запустить обратный вызов, но это не решение, потому что если пользователь нажимает, где есть пробел или пробел, обратный вызов срабатывает. Кроме того, я обнаружил, что если я установил родительский элемент представления строки в android:clickable=true
, а дочерние представления, которые я хочу обработать с обратным вызовом, до android:clickable=false
, это не сработает, потому что, по-видимому, свойство не перезаписывается.
EDIT Извините за действительно плохой титул, который у меня был до этого, я даже не заметил, что я задал вопрос.
, вы можете прочитать мое редактирование, так как, возможно, предыдущее название привело вас к себе из пути, выяснив, что щелчок на странице был вызван не моя проблема. Мне нужно выяснить, какой вид внутри элемента listItem был нажат. – doplumi
Обновлен мой ответ. – ElDuderino
прочитайте комментарий, который я сделал по вопросу о dafi – doplumi