本示例采用的是RecyclerView,其适配器类与常无二,其异在于继承一个代理类,为适配之后侧滑删除而准备
publicclassClockAdapterextendsWeSwipeProxyAdapterClockAdapter.ViewHolder
建立一个内部类ViewHolder实现控件定义申明
publicViewHolder(
NonNullViewitemView){super(itemView);DeleteBtn=itemView.findViewById(R.id.DeleteBtn);Hour=itemView.findViewById(R.id.Hour);Split=itemView.findViewById(R.id.Split);Min=itemView.findViewById(R.id.Min);Layout=itemView.findViewById(R.id.ItemLayout);ClockSwitch=itemView.findViewById(R.id.ClockSwitch);}实现onCateViewHolder方法载入子项布局文件
publicViewHolderonCateViewHolder(
NonNullViewGrouppant,intviewType){Viewview=LayoutInflater.from(pant.getContext()).inflate(R.layout.clock_item,pant,false);turnnewViewHolder(view);}绑定实体类,实现onBindViewHolder获取数据
publicvoidonBindViewHolder(
NonNullfinalViewHolderholder,finalintposition){finalClockTimeclockTime=timeList.get(position);holder.Hour.setText(clockTime.getHour());holder.Split.setText(":");holder.Min.setText(clockTime.getMin());booleanisSelect=clockTime.isSelect();if(isSelect){holder.ClockSwitch.setChecked(true);}else{holder.ClockSwitch.setChecked(false);}holder.DeleteBtn.setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(Viewv){DeleteItem(position);}});holder.ClockSwitch.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){OverridepublicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){if(isChecked){SelectModel(holder,clockTime);}else{NormalModel(holder);}}});}闹钟初始数据此处有三处状态,第一种状态:第一次进入程序,默认加载固定闹钟子项;第二种状态:进入添加子项页面,然后返回其主页面,并判断其switch是否为tu,如果为tu则添加子项;第三种状态:程序被系统回收或者用户停止程序,并再次进入程序,防止加载前一时刻闹钟子项;
/***默认数据*/privatevoidInitData(){if(flag==START){for(inti=;i0;i+=){ClockTimeclockTime=newClockTime(timeFormat.HandleHour(i),timeFormat.HandleHour(i),false);clockTimeList.add(clockTime);clockTime.setClockTimeList(clockTimeList);}}elseif(flag==PAUSE){GetCallBackData();}else{Log.d(TAG,"RestartApp");}}
侧滑删除闹钟子项添加依赖实现侧滑主要依赖于一个第三方包,然后使用RecyclerView进行子项绑定依赖如下:
implementation