Android 侧滑按钮的实现代码
目录
导入闭包创建RecyclerView子项布局文件布局代码创建RecyclerView适配器描述子项点击事件应用Android侧滑按钮效果如下所示:
导入闭包
将以下语句倒入目录下build.gradle文件内
implementation "com.github.WangcWj:WeSwipe:1.0.2" implementation "cn.wang.we:network:1.0.0"
将以下语句倒入项目build.gradle文件内
创建RecyclerView子项布局文件
效果描述
整体效果图,因为使用RelativeLayout布局的缘故,将侧滑按钮给覆盖了
我们接下来选中侧滑按钮,由此我们可以看见按钮的位置
将侧滑按钮释放出来,看一下效果
布局代码
创建RecyclerView适配器
描述
使用第三方API轮子时,不能像当初我们建立适配器一样继承一个RecyclerView.Adapter
,而要继承WeSwipeProxyAdapter
我们一般根据需求需要实现以下三个方法
@Override public float getSwipeWidth() { //侧滑按钮的宽度 } @Override public View needSwipeLayout() { //子项布局文件的最外层Layout } @Override public View onScreenView() { //子项布局文件的最外层Layout }
子项点击事件
//创建点击事件接口函数 public interface ParkingOnClick{ void OnClickListener(View view,int Position); } //点击事件调用 public void setOnclick(ParkingOnClick onclick) { this.onClick = onclick; } //引入布局View中 return new ViewHolder(view,onClick); //内部类实现点击事件 class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener //构造函数 public ViewHolder(@NonNull View itemView,ParkingOnClick Listener) this.Listener = Listener; //点击事件外露 @Override public void onClick(View v) { if (Listener != null) { Listener.OnClickListener(v, getPosition()); } }
适配器代码
public class ParkingAdapter extends WeSwipeProxyAdapter{ List data = new ArrayList<>( ); private ParkingOnClick onClick; public ParkingAdapter(List data ){ this.data = data; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from( parent.getContext() ).inflate( R.layout.parking_item,parent,false ); return new ViewHolder(view,onClick); public void onBindViewHolder(@NonNull ViewHolder holder, int position) { ParkingData bookingData = data.get(position); holder.BigPlace.setText(bookingData.getBigPlace()); holder.SmallPlace.setText(bookingData.getSmallPlace()); holder.ParkingNumber.setText(bookingData.getParkingNumber() + ""); holder.Distance.setText(bookingData.getDistance()); holder.SideText.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Log.d( "Da",1+"" ); if (onClick != null){ onClick.OnClickListener( v,position ); } } } ); public int getItemCount() { return data.size(); class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,WeSwipeHelper.SwipeLayoutTypeCallBack { private TextView BigPlace,SmallPlace,Distance,ParkingNumber,SideText; private LinearLayout SideLayout; private ParkingOnClick Listener; public ViewHolder(@NonNull View itemView,ParkingOnClick Listener) { super( itemView ); this.Listener = Listener; BigPlace = itemView.findViewById( R.id.SimplePlace ); SmallPlace = itemView.findViewById( R.id.detailPlace ); Distance = itemView.findViewById( R.id.ParkingDistance ); ParkingNumber = itemView.findViewById( R.id.ParkingNumber ); SideText = itemView.findViewById( R.id.SideText ); SideLayout = itemView.findViewById( R.id.SideLayout ); } @Override public float getSwipeWidth() { return SideText.getWidth(); public View needSwipeLayout() { return SideLayout; public View onScreenView() { public void onClick(View v) { if (Listener != null) { Listener.OnClickListener(v, getPosition()); //回调接口 public interface ParkingOnClick{ void OnClickListener(View view,int Position); //点击事件 public void setOnclick(ParkingOnClick onclick) { this.onClick = onclick; }
应用
解析xml数据
private void InitData(){ String[] parkingArray = getResources().getStringArray(R.array.parking); for (int i = 0; i绑定
WeSwipe.attach(ParkingRecycler); private void InitRecycler(){ LinearLayoutManager manager = new LinearLayoutManager(this); ParkingRecycler.setLayoutManager(manager); adapter = new ParkingAdapter(dataList); ParkingRecycler.setAdapter(adapter); WeSwipe.attach(ParkingRecycler); }点击事件引用
adapter.setOnclick(new ParkingAdapter.ParkingOnClick() { @Override public void OnClickListener(View view, int Position) { //do anything... } });原作者GitHub项目地址
https://github.com/WangcWj/SideslippingDemo
到此这篇关于Android侧滑按钮的文章就介绍到这了,更多相关android侧滑按钮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?