ListView onItemClickListener не вызывается
Я пытался сделать заказ ListView
. ListView содержит RelativeLayout
, который содержит TextView
и Switch
. При нажатии на переключатель переключатель должен измениться с true на false (и наоборот).
Это мой метод getView:
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.item_gproblem, null);
//vi.setClickable(true); Tried this
//vi.setFocusable(true);
TextView txt_comment_description = (TextView) vi
.findViewById(R.id.txt_comment_description);
txt_comment_description.setText(MyTasks.allGComments.get(position)
.getProblemDescription());
//txt_comment_description.setFocusable(false); Tried this
//txt_comment_description.setClickable(false);
Switch switch_comment = (Switch) vi.findViewById(R.id.switch_comment);
//switch_comment.setFocusable(false); Tried this
//switch_comment.setClickable(false);
//First time running getMyGComments returns a empty ArrayList
if (MyTasks.allCustomers.get(ServerData.myID - 1).getMyGComments()
.size() > position) {
switch_comment.setChecked(MyTasks.allCustomers
.get(ServerData.myID - 1).getMyGComments().get(position)
.isProblemValue());
}
return vi;
}
Это мой onClickListener:
list_quality.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//Do Something
}
});
Мой onItemClickListener
не вызывается, когда я нажимаю на TextView, переключатель или на пространство между двумя объектами. Когда я нажимаю на переключатель, он действует нормально (состояние меняется). Но мой onItemClickListener
- нет. называемый. Я попытался отключить clickable
и focusable
коммутатора и TextView, но это тоже не работает.
Выполняется setOnItemClickListeren.
2 ответа:
Добавьте нижеприведенную строку в контейнер строки listview:
android:descendantFocusability="blocksDescendants"
Удалить все clickables/focusables независимо от того, где вы поместите их. Затем следует вызвать onItemClick, если вы нажмете на весь элемент.
Кроме того, если вы хотите, чтобы кнопки внутри строки listview также были кликабельными, добавьте onClickListener к кнопке внутри вашего метода getView () адаптера ListView.