下面列出了androidx.recyclerview.widget.RecyclerView#setOnTouchListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@SuppressLint("ClickableViewAccessibility")
private void setTouchListener(@NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
float dx)
{
recyclerView.setOnTouchListener((v, event) -> {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
shouldTriggerSwipeFeedback = true;
break;
case MotionEvent.ACTION_UP:
handleTouchActionUp(recyclerView, viewHolder, dx);
case MotionEvent.ACTION_CANCEL:
swipeBack = true;
shouldTriggerSwipeFeedback = false;
resetProgressIfAnimationsDisabled(viewHolder);
break;
}
return false;
});
}
private void handleTouchActionUp(@NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
float dx)
{
if (dx > SWIPE_SUCCESS_DX) {
canTriggerSwipe = false;
onSwiped(viewHolder);
if (shouldTriggerSwipeFeedback) {
vibrate(viewHolder.itemView.getContext());
}
recyclerView.setOnTouchListener(null);
}
recyclerView.cancelPendingInputEvents();
}
@SuppressLint("ClickableViewAccessibility")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_accesslog_date_list, container, false);
mListAdapter = new DateListAdapter(inflater);
mListAdapter.setOnItemClickListener((v, position) ->
gotoAccessLogListFragment(mListAdapter.getItem(position)));
mListAdapter.setOnItemRemoveListener((data) -> {
AccessLogProvider provider = getAccessLogProvider();
if (provider != null) {
provider.remove(data);
}
});
RecyclerView recyclerView = root.findViewById(R.id.recycler_view_accesslog_date_list);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(mListAdapter);
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
recyclerView.setOnTouchListener((v, event) -> {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mListAdapter.dismissSnackbar();
break;
}
return false;
});
ItemTouchHelper helper = new ItemTouchHelper(new SwipeToDeleteCallback(getContext()) {
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mListAdapter.onItemRemove(viewHolder, recyclerView);
}
});
helper.attachToRecyclerView(recyclerView);
setHasOptionsMenu(true);
return root;
}
private void setTouchListener(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
float dX, float dY, int actionState, boolean isCurrentlyActive) {
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
swipeBack = event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP;
return false;
}
});
}
@SuppressLint("ClickableViewAccessibility")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_accesslog_list, container, false);
mListAdapter = new AccessLogListAdapter(inflater);
mListAdapter.setOnItemClickListener((view, position) ->
gotoAccessLogFragment(mListAdapter.getItem(position)));
mListAdapter.setOnItemRemoveListener((data) -> {
AccessLogProvider provider = getAccessLogProvider();
if (provider != null) {
provider.remove(data);
}
});
mCondition = root.findViewById(R.id.fragment_search_edit_text);
RecyclerView recyclerView = root.findViewById(R.id.list_view_accesslog_list);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(mListAdapter);
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
recyclerView.setOnTouchListener((v, event) -> {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mListAdapter.dismissSnackbar();
break;
}
return false;
});
ItemTouchHelper helper = new ItemTouchHelper(new SwipeToDeleteCallback(getContext()) {
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mListAdapter.onItemRemove(viewHolder, recyclerView);
}
});
helper.attachToRecyclerView(recyclerView);
root.findViewById(R.id.fragment_search_btn).setOnClickListener((v) -> {
searchAccessLogs(mCondition.getText().toString());
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
});
setHasOptionsMenu(true);
return root;
}