左滑删除已经有很多的开源框架,这里仅仅记录下最简单的左滑删除:
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.效果图: