GitHub - SwipeRecyclerView
支持側滑選單、長按拖拽、Header、Footer
Maven
1.build.grade
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2./app/build.grade
dependencies {
implementation 'com.github.RelinRan:SwipeRecyclerView:2021.12.26.1'
}
使用方法
1.xml布局
<com.androidx.widget.SwipeRecyclerView
android:id="@+id/rv_content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2.頁面代碼
rv_content = findViewById(R.id.rv_content);
rv_content.setLayoutManager(new LinearLayoutManager(context));
//設定可以長按拖拽
rv_content.setLongPressDragEnabled(true);
//設定可以側滑顯示選單
rv_content.setSwipeMenuEnable(true);
//繼承RecyclerAdapter實作的SwipeAdapter
SwipeAdapter adapter = new SwipeAdapter(this);
adapter.setOnItemClickListener(new SwipeItemClick());
rv_content.setAdapter(adapter);
private class SwipeItemClick implements RecyclerAdapter.OnItemClickListener<String>{
@Override
public void onItemClick(RecyclerAdapter<String> adapter, View v, int position) {
if (v.getId() == R.id.tv_delete) {
adapter.removeItem(position);
//操作完畢,必須呼叫關閉選單欄
rv_content.closeSwipeMenu();
} else if (v.getId() == R.id.tv_edit) {
//操作完畢,必須呼叫關閉選單欄
rv_content.closeSwipeMenu();
}
}
}
3.側滑選單 + itemView
注意:必須繼承 RecyclerAdapter重寫getItemSwipeMenuLayoutResId() 和 getItemLayoutResId();
private class ItemAdapter extends RecyclerAdapter<String> {
public ItemAdapter(Context context) {
super(context);
}
@Override
public int getHeaderLayoutResId() {
//TODO:頭部布局
return R.layout.androidx_item_header;
}
@Override
protected void onHeaderBindViewHolder(ViewHolder holder, int position) {
super.onHeaderBindViewHolder(holder, position);
// TODO:頭部布局資料系結
holder.addItemClick(R.id.btn_header);
holder.find(Button.class,R.id.btn_header).setText("Header - "+getItem(position));
}
@Override
public int getFooterLayoutResId() {
//TODO:腳部布局
return R.layout.androidx_item_footer;
}
@Override
protected void onFooterBindViewHolder(ViewHolder holder, int position) {
super.onFooterBindViewHolder(holder, position);
//TODO:腳部布局資料系結
holder.find(Button.class,R.id.btn_footer).setText("Footer - "+getItem(position));
holder.addItemClick(R.id.btn_footer);
}
@Override
protected int getItemSwipeMenuLayoutResId() {
//TODO:側滑Item布局
return R.layout.android_menu;
}
@Override
protected void onSwipeBindViewHolder(ViewHolder holder, int position) {
super.onSwipeBindViewHolder(holder, position);
//TODO:側滑Ite布局資料系結
holder.addItemClick(R.id.btn_item_name);
holder.addItemClick(R.id.tv_delete);
holder.addItemClick(R.id.tv_edit);
holder.find(TextView.class, R.id.btn_item_name).setText(getItem(position));
}
@Override
protected int getItemLayoutResId(int viewType) {
//TODO:普通item布局
return R.layout.androidx_items;
}
@Override
protected void onItemBindViewHolder(ViewHolder holder, int position) {
//TODO:普通item布局資料系結
}
}
常用方法
1.獲取觸摸事件助手
ItemTouchHelper getItemTouchHelper();
2.設定Item觸摸助手回呼
setSwipeItemTouchHelperCallback(SwipeItemTouchHelperCallback callback);
3.設定是否自動處理移動邏輯
setDragMoveAuto(boolean dragMoveAuto);
4.設定是否自動處理選擇邏輯
setSelectedAuto(boolean selectedAuto);
5.設定是否可長按拖拽
setLongPressDragEnabled(boolean longPressDragEnabled) ;
6.設定拖動標識
setDragFlags(int dragFlags);
7.設定滑動標識
setSwipeFlags(int swipeFlags);
8.設定觸摸選中監聽
setOnItemTouchSelectedChangedListener(OnItemTouchSelectedChangedListener listener);
9.設定長按拖拽移動監聽
setOnItemTouchMoveListener(OnItemTouchMoveListener listener);
10.觸摸橫向滑動完成監聽
setOnItemTouchSwipedListener(OnItemTouchSwipedListener listener);
11.打開側滑選單
openSwipeMenu();
12.關閉側滑選單
closeSwipeMenu();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/393971.html
標籤:其他
下一篇:安卓訪問網路超時閃退
