1. 程式人生 > >仿QQ左滑刪除【基於RecyclerView】

仿QQ左滑刪除【基於RecyclerView】

這是我github開源專案,目前測試階段,歡迎大家使用提意見!

 

https://github.com/SineyCoder/LeftSlideView

 

使用步驟 

 新增倉庫

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);
        }
    }

}

 測試結果: