Я пытаюсь сделать RecyclerView с функцией AutoScroll.Теперь все работает нормально.Но я хочу TouchEvent с автопрокруткой.Это означает, что если пользователь не трогал, список автоматически прокручивается.И если пользователь коснется, список переместится к пальцу пользователя.Но теперь, если пользователь трогает список, список останавливается, но через 1 секунду он снова перемещается, даже если коснуться пальца.
Вот мой код.
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
isTouched = true;
return false;
case MotionEvent.ACTION_MOVE:
isTouched = true;
return false;
case MotionEvent.ACTION_UP:
isTouched = false;
return true;
}
return super.onInterceptTouchEvent(rv, e);
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(final RecyclerView view, int scrollState) {
Log.e("test", isTouched+"");
if (!isTouched) {
//list is top
if (!recyclerView.canScrollVertically(-1)) {
listHandler.postDelayed(new Runnable() {
@Override
public void run() {
view.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
GoingDown = true;
}
}, 1000);// 1 second delay
//list is bottom
} else if (!recyclerView.canScrollVertically(1)) {
listHandler.postDelayed(new Runnable() {
@Override
public void run() {
view.smoothScrollToPosition(0);
GoingDown = false;
}
}, 1000);// 1 second delay
//list is middle
} else {
if (GoingDown) {
listHandler.postDelayed(new Runnable() {
@Override
public void run() {
view.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
GoingDown = true;
}
}, 500);// 1 second delay
} else {
listHandler.postDelayed(new Runnable() {
@Override
public void run() {
view.smoothScrollToPosition(0);
GoingDown = false;
}
}, 500);// 1 second delay
}
}
}
}
});
Что я должен исправить для нормальной работы?
ps] Извините за мой короткий английский.