Я использую макет таблицы для отображения данных, но я хочу, чтобы он вел себя как элементы списка (возможность выбирать, при выборе изменять фон, при щелчке, с эффектом наведения, с возможностью щелчка) для этой цели я использую следующие слушатели
OnClickListener(to perform action)
OnFocusChangeListener(To change background color)
OnTouchListener(to focus specific row)
Теперь проблема заключается в том, что когда пользователь касается любого элемента, он сначала получает фокус, а затем должен снова коснуться, чтобы запустить событие onclick, чтобы исправить это, я внес изменение, и ontouch запускает действие для конкретной строки.
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_UP){
v.requestFocus();
int viewId= v.getId();
handleEvent(viewId);//Switch cases to perform row specific actions.
}
return false;
}
теперь, если пользователь коснется строки, событие будет запущено, что работает отлично, но здесь возникает еще одна проблема, когда даже пользователь хочет прокрутить данные, перетаскивая палец на экран, событие ontouch
запускается .... и действие выполняется автоматически, хотя пользователь думает, что это будет scroll down
экран.