запускать OnItemНажмите на просмотр списка при нажатии кнопки - PullRequest
2 голосов
/ 26 ноября 2011

У меня есть ListView, который содержит кнопку для каждого элемента. Я хочу, чтобы щелчок по элементу вызывал событие OnItemClick в списке, поскольку это событие содержит больше информации (id, position), чем событие OnClick кнопки.

Это важное действие в списке, поэтому мне нужна кнопка, и я не хочу, чтобы нажатие обычного элемента вызывало ее срабатывание (я думаю, что фокусировка на кнопке поможет).

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Строка также кликабельна?В зависимости от того, можно ли щелкнуть по строке, я, вероятно, сделаю одно из следующих действий:

  1. Вы можете просто установить clickable=false на кнопке, и позволить сенсорному вводу привязки к родителю, а именнострока списка, в которой находится кнопка, и onItemClickListener должен быть уведомлен для этой строки

  2. Вы можете установить тег ( View.setTag (..) ) на кнопке, которая сообщает позицию в строке, в которой находится кнопка, и прочитайте этот тег в onClickListener

  3. Вы можете следовать ответу, предложенному freshDroid на этой страницено это будет неэффективно, так как вы создаете новый OnClickListener каждый раз, когда создается / перерабатывается представление, что приведет к дополнительной работе ГХ.

0 голосов
/ 26 ноября 2011

попробуйте сделать свой собственный адаптер для списка. В методе getView () выполните все необходимые требования.

setListAdapter(new ArrayAdapter<string>(this, R.layout.list_item, strings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;

if (null == convertView) {
row = mInflater.inflate(R.layout.list_item, null);
} else {
row = convertView;
}

Button bt1 = (Button) row.findViewById(android.R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v){
       //you will get position and do necessary method 
       }
});

return row;
}
});
...