一分钟轻松打造左滑删除+下拉刷新Listview控件

尊重原创转载请注明出处:http://blog.csdn.net/guitarstudio/article/details/48525339 Power by guitar 侵权必究!

2017年8月21号更新内容:
最新代码已经上传到github,博客中源码解析中的代码不是最新的
github地址:https://github.com/guitarstar/SwipeLayout
如果仅仅关注如果使用,可以看如下直接使用的方法:

步骤 1. Add the JitPack repository to your build file

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}
步骤 2. Add the dependency

dependencies {
        compile 'com.github.guitarstar:SwipeLayout:v1.0'
}
步骤 3. 列表的布局layout编写

<com.solo.library.SlideTouchView
    android:id="@+id/mSlideTouchView"
    android:layout_width="match_parent"
    android:layout_height="60dp">
    <!-- 下层布局 -->
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_del"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@android:color/holo_red_light"
            android:text="删除"/>
    </LinearLayout>
    <!-- 上层布局 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff"><!-- 这里设个背景颜色将下层布局遮掩 -->
        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"/>
    </LinearLayout>
</com.solo.library.SlideTouchView>
步骤 4. ListView的adapter继承SlideBaseAdapter(使用recyclerview的adapter继承SlideRecyclerViewBaseAdapter)

如果使用ListView的情况:

public class LvAdapter extends SlideBaseAdapter {
    List list; public LvAdapter(List list) { this.list = list; }

@Override
public int[] getBindOnClickViewsIds() {
    return new int[]{R.id.btn_del};  //必须调用, 删除按钮或者其他你想监听点击事件的View的id
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MyViewHolder holder = new MyViewHolder();
    if (convertView == null) {
        convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_list_item, null);
        holder.tv = (TextView) convertView.findViewById(tv);
        holder.mSlideTouchView = (SlideTouchView) convertView.findViewById(R.id.mSlideTouchView);
        convertView.setTag(holder);

        bindSlideState(holder.mSlideTouchView); //必须调用

    } else {
        holder = (MyViewHolder) convertView.getTag();
    }

    bindSlidePosition(holder.mSlideTouchView, position);//必须调用

    holder.tv.setText(String.valueOf(list.get(position)));
    return convertView;
}

如果使用recyclerview的情况:
public class RcyAdapter extends SlideRecyclerViewBaseAdapter {
   
    List<Integer> list;

    public RcyAdapter(List<Integer> list) {
        this.list = list;
    }

    @Override
    public int[] getBindOnClickViewsIds() {
        return new int[]{R.id.btn_del};  //必须调用, 删除按钮或者其他你想监听点击事件的View的id
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_list_item, null);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyViewHolder viewHolder = (MyViewHolder) holder;
        viewHolder.tv.setText(String.valueOf(list.get(position)));

        bindSlidePosition(viewHolder.mSlideTouchView, position);//必须调用
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
   
        TextView tv;
        SlideTouchView mSlideTouchView;
        public MyViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.tv);
            mSlideTouchView = (Slid
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值