Я хочу реализовать ontouch и onclicklistener в элементе списка Android.
Если я выбираю строку и щелкаю строку, нужно вызвать onclicklistener.
в то же время, если я прокручиваю строку списка слева и справа., нужно вызвать ontouchlistener в файле адаптера.
Как я могу сделать ? пожалуйста, дайте мне решение для этого?
здесь прокрутка работает нормально. но onclick не вызывается из моего кода.
В файле активности.,
class MyUpcomingTouchListener implements OnTouchListener
{
@Override
public boolean onTouch(View v, MotionEvent event) {
ViewHolder1 holder = (ViewHolder1) v.getTag(R.layout.listof_upcoming);
int action = event.getAction();
int position = (Integer) v.getTag();
switch (action) {
case MotionEvent.ACTION_DOWN:
action_down_x = (int) event.getX();
Log.d("action", "ACTION_DOWN - ");
break;
case MotionEvent.ACTION_MOVE:
Log.d("action", "ACTION_MOVE - ");
action_up_x = (int) event.getX();
difference = action_down_x - action_up_x;
break;
case MotionEvent.ACTION_UP:
Log.d("action", "ACTION_UP - ");
calcuateupcomingDifference(holder, position);
action_down_x = 0;
action_up_x = 0;
difference = 0;
break;
}
return true;
}
}
private void calcuateupcomingDifference(final ViewHolder1 holder, final int position) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (difference == 0) {
}
if (difference > 90) {
holder.carudetails.setVisibility(View.GONE);
holder.carucheckin.setVisibility(View.VISIBLE);
holder.caruimage.setVisibility(View.VISIBLE);
upcomingitems.get(position).setVisible(true);
upcominglistAdapter.changeData(upcomingitems);
}
if (difference < -90) {
holder.carudetails.setVisibility(View.VISIBLE);
holder.carucheckin.setVisibility(View.GONE);
holder.caruimage.setVisibility(View.GONE);
upcomingitems.get(position).setVisible(true);
upcominglistAdapter.changeData(upcomingitems);
}
}
});
}
Из файла адаптера
convertView.setOnTouchListener(mOnTouchListener);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TodayList.this,
DetailPage.class);
startActivity(intent);
}});