Вопрос

У меня есть флажок в моей строке ListView, который выглядит так.

===========================================
[CheckBox] [TextView] [TextView] [TextView]
===========================================

XML -код здесь

<CheckBox
    android:id="@+id/course_search_checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:clickable="false"
    android:focusable="false" />

И я уже сделал флажок не кликабельным и фокусируемым, чтобы событие Click было передано в ListView.

Что я хочу сделать здесь, так это то, что когда пользователь нажимает на ListView, сделайте проверку флажки и добавляйте нажатое положение ListView в ArrayList. Итак, как я могу проверить флажок в OnitemClickListener of ListView?

Помогите, пожалуйста, спасибо.

Это было полезно?

Решение

Вы можете добавить этот код в свой OnItemClickListener:

public void onItemClick(AdapterView parent, View view, int position, long id){
   CheckBox box = (CheckBox)view.findViewById(R.id.course_search_checkbox);
   box.setChecked(true);
}

Другие советы

Ну, если это один список выборов, тогда вам нужны эти API от ListView Чтобы получить позицию/идентификатор:

getSelectedItemId()
getSelectedItemPosition()

И теперь, если вы внедрили свой адаптер для ListView. Там для API, как bindView, getView и т. Д. (В зависимости от того, какой адаптер вы использовали), вы установили проверенное состояние на основе вышеуказанных API. Что-то типа

public View getView(int position, View convertView, ViewGroup parent)
{
  ListView listView = (ListView)parent; // This is the parent view group passed as argument.
  CheckBox cb = (CheckBox)convertView.findViewById(R.id.check_box);
  if(getSelectedItemPosition() == position)
     cb.setChecked(true);
  else
     cb.setChecked(true);
 }

Для мультисекции вам нужны APIS из ListView:

getCheckedItemPositions

Код для проверки флажества будет аналогичен отдельному выбору (хотя не точнее).

Примечание. Упомянутый код только для справки. Это не оптимизированный код. Определенно нужны модификации. ПРИМЕЧАНИЕ:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top