Как сделать флажок зарегистрирован в OnitemClickListener ()?
-
26-10-2019 - |
Вопрос
У меня есть флажок в моей строке 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
Код для проверки флажества будет аналогичен отдельному выбору (хотя не точнее).
Примечание. Упомянутый код только для справки. Это не оптимизированный код. Определенно нужны модификации. ПРИМЕЧАНИЕ: