android使用HorizontalScrollView之左滑删除

左滑删除已经有很多的开源框架,这里仅仅记录下最简单的左滑删除:

1.主页布局xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.deletedemo.MainActivity">
   <android.support.v7.widget.RecyclerView
       android:id="@+id/list"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">
   </android.support.v7.widget.RecyclerView>
</RelativeLayout>

2.主页代码:

public class MainActivity extends AppCompatActivity {


    @InjectView(R.id.list)
    RecyclerView list;
    private DeleteDemoAdapter adapter;
    private ArrayList<String> datas;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.inject(this);

        datas=new ArrayList<>();
        for(int i=0;i<10;i++){
            datas.add("第 "+i+"行");
        }

        adapter=new DeleteDemoAdapter(MainActivity.this,R.layout.item_layout,datas);
        list.setAdapter(adapter);
        list.setLayoutManager(new LinearLayoutManager(this));//这里使RecylerView的使用,大家应该不陌生
    }


3.适配器代码:

注解:适配器代码中用到BaseQuickAdapter,这个在之前的一篇文章有介绍过:

https://blog.csdn.net/zuo_er_lyf/article/details/79207150 点击打开链接

public class DeleteDemoAdapter extends BaseQuickAdapter<String,BaseViewHolder> {

    private ArrayList<String> datas;
    private HorizontalScrollView scrollView;
    private Context context;
    public DeleteDemoAdapter(Context context,@LayoutRes int layoutResId, @Nullable ArrayList<String> data) {
        super(layoutResId, data);
        this.datas=data;
        this.context=context;
    }

    @Override
    protected void convert(final BaseViewHolder helper, String item) {

        //这段代码,重新设置宽度,必须要设置,否则会出现删除按钮在屏幕以内,
        //原因是使用HorizontalScrollView,xml中match_parent属性为wrap_parent
        LinearLayout layout=helper.getView(R.id.layout);
        int width= ScreenUtil.getInstance(context).getScreenWidth();
        ViewGroup.LayoutParams layoutParams=layout.getLayoutParams();
        layoutParams.width=width;
        layout.setLayoutParams(layoutParams);


        helper.setText(R.id.tv_content,item);
        TextView tv_delete=helper.getView(R.id.tv_delete);

        tv_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                scrollView=helper.getView(R.id.scrollView);
                scrollView.scrollTo(0,0);//删除之后,横向滑动到最初位置

                datas.remove(helper.getPosition());
                notifyDataSetChanged();
            }
        });

    }
}

4.屏幕工具类:

public class ScreenUtil {
    public static int height;
    public static int width;
    private static ScreenUtil instance;
    private Context context;

    private ScreenUtil(Context context) {
        this.context = context;
        WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        manager.getDefaultDisplay().getMetrics(dm);
        width = dm.widthPixels;
        height = dm.heightPixels;
    }

    public static ScreenUtil getInstance(Context context) {
        if (instance == null) {
            instance = new ScreenUtil(context);
        }
        return instance;
    }



    /**
     * 得到手机屏幕的宽度, pix单位
     */

    /**
     * 获得通知栏的高度
     * @return
     */
    public static int getStatusHeight(Context context){
        int resid = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if(resid > 0){
            return context.getResources().getDimensionPixelSize(resid);
        }
        return -1;
    }

    /**
     * 得到手机屏幕的宽度, pix单位
     */
    public int getScreenWidth() {
        return width;
    }

    //获取屏幕的宽度
    public static int getScreenWidth(Context context) {
        WindowManager manager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        Display display = manager.getDefaultDisplay();
        return display.getWidth();
    }
    //获取屏幕的高度
    public static int getScreenHeight(Context context) {
        WindowManager manager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        Display display = manager.getDefaultDisplay();
        return display.getHeight();
    }
    //px转dp
    public static int dp2px(Context context,float dp) {
        return (int) (dp * context.getResources().getDisplayMetrics().density + 0.5f);
    }
}

5.效果图:

            


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值