2014-01-28 2 views
1

Мой вопрос прост: как использовать длительный щелчок, чтобы пользователи могли выбирать элементы из ListView? До сих пор я знаю только, как обнаружить «короткие» клики и предпринять соответствующие действия.Длинный клик, чтобы начать выбор элементов в ListView?

Кроме того, я хотел бы показать галочку на выбранном элементе. Как это можно сделать?

ответ

1

Простой: OnLongClickListener

Затем вам нужно вручную помнить, что выбран или нет. Вам нужно уведомить список об изменениях и сделать что-то в методе getView вашего адаптера.

Было бы целесообразно использовать режим контекстного ActionBar для взаимодействия со всем элементом сразу, см. here.

+0

Я не говорю о просто отображении контекстного меню, а выбор элементов в объеме –

2

Он работает так же, как и onClickListener, вместо этого вы проверяете onLongClickListener. Таким образом, вы бы иметь такую ​​структуру:

your_view.setOnLongClickListener(new View.OnLongClickListener() { 
    public boolean onLongClick(View v) { 
    ... 
    } 
}); 

Если вы хотите, чтобы отобразить флажок, на мой взгляд, лучший способ является определяющим свой собственный макет строки, где вы просто определить CheckBox на правой стороне содержимое строки. Таким образом, вместо передачи ArrayAdapter некоторых Android макета, вы бы указать свой новый макет, что-то вроде:

your_adapter = new ArrayAdapter(context, R.layout.your_new_layout, initial_rows); 
+0

Если в моем макете, если Я держу флажок с видимостью 'GONE' и показываю его по длинному клику, будет ли он работать? –

+0

Вам необходимо вызвать notifyDataSetChanged на вашем адаптере, тогда метод getView будет вызываться для каждой видимой строки, вы можете сделать все, что вам может показаться, если вы установите флажок, измените цвет фона и т. Д. –

+0

Конечно, просто объявите 'onLongClickListener' внутри вашего метода overViewen getView(). Второй параметр этого метода (обычно называемый 'convertView') - это (очень неопределенно) раскладка каждой строки. Вы можете просто получить представление «CheckBox», используя «convertView.findViewById (R.id.my_checkbox)», а затем вы можете делать все, что хотите, установить его видимость VISIBLE, GONE ... – nKn

Смежные вопросы