仿QQ左滑刪除【基於RecyclerView】
阿新 • • 發佈:2018-12-09
這是我github開源專案,目前測試階段,歡迎大家使用提意見!
使用步驟
新增倉庫
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
新增依賴包
dependencies { implementation 'com.github.SineyCoder:LeftSlideView:v1.2' }
因為此list是根據RecyclerView來進行整改的,專案中自帶design-28.0.0
首先設定Activity的佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <siney.cn.leftslideview.LeftSlideView android:id="@+id/test_view" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
然後設定item
需要注意的是,item的基佈局,即id為content_item這個佈局,一定要設定id
然後自己要顯示的文字覆蓋整個寬度,即id為text這個view
然後設定隱藏項,記住一定要設定具體寬度和id,我這裡設定寬度為65dp,id為a/b/c
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/content_item" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="65dp"> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:id="@+id/a" android:layout_width="65dp" android:layout_height="match_parent" android:text="置頂" android:background="@android:color/darker_gray"/> <TextView android:id="@+id/b" android:layout_width="65dp" android:layout_height="match_parent" android:text="刪除" android:background="@android:color/holo_red_light"/> <TextView android:id="@+id/c" android:layout_width="65dp" android:layout_height="match_parent" android:text="忽略" android:background="@android:color/holo_red_light"/> </LinearLayout>
最後使用
Activity
public class MainActivity extends AppCompatActivity {
private LeftSlideView mLeftSlideView;
List<String> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLeftSlideView = findViewById(R.id.test_view);
for(int i = 0;i < 20;i++){
list.add(UUID.randomUUID().toString());
}
MyAdapter adapter = new MyAdapter(list);//自己建立adapter
LeftSlideLinearManager manager = new LeftSlideLinearManager(this);//專案自帶的LeftSlidemanager,修改了部分功能
mLeftSlideView.setLayout(R.id.content_item);//一定要設定基佈局id
mLeftSlideView.setItems(R.id.a, R.id.b, R.id.c);//一定要設定隱藏項
mLeftSlideView.setLayoutManager(manager);
mLeftSlideView.setAdapter(adapter);
}
}
adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> list;
public MyAdapter(List<String> list){
this.list = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_layout, viewGroup, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.content.setText(list.get(i));
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private TextView content;
public ViewHolder(@NonNull View itemView) {
super(itemView);
content = itemView.findViewById(R.id.text);
}
}
}
測試結果: