Android RecycleView 實(shí)現(xiàn)左滑上下分層示例代碼(自定義功能)
由于項(xiàng)目原因,需要在很多地方需要左劃刪除,并在后期會(huì)在item中不定增加功能。網(wǎng)上很多左劃刪除的demo,但大多封裝的不太徹底,所以就試著自己進(jìn)行封裝。
獨(dú)立上下兩層互補(bǔ)干擾,滿足不同item的左劃
底部功能項(xiàng)不定如(刪除、收藏)
截圖
獨(dú)立Adapter的操作方式
思路: public RCommonSlideAdapter(Object object, List datas, int layoutId, Class clazz, SlideItemHolder handle) {
在onCreateViewHolder中通過反射創(chuàng)建holder,保證數(shù)據(jù)的操作通過回調(diào)函數(shù),交給activity處理
Constructor constructor2 = mClazz.getConstructor(View.class); holder = constructor2.newInstance(v);
上下分層
思路:創(chuàng)建底部xml布局,再通過addView插入頂部view,并交由activity處理,底部布局處理放在adapter中處理。
Constructor constructor = ViewHolderClass.SlideViewHolder.class.getConstructor(View.class); holder = constructor.newInstance(v); View contentView = View.inflate(parent.getContext(), mLayoutId, null); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup .LayoutParams.WRAP_CONTENT); ((ViewHolderClass.SlideViewHolder) holder).mRlSlidContent.addView(contentView, params); Constructor constructor2 = mClazz.getConstructor(View.class); holder = constructor2.newInstance(v); ((ViewHolderClass.SlideViewHolder) holder).mRlSlidContent.getLayoutParams().width = getScreenWidth(parent.getContext());
獨(dú)立功能項(xiàng)
思路:在xml布局中,不斷增加item。并再回調(diào)函數(shù)中,對每個(gè)按鈕選擇性處理,并可動(dòng)態(tài)添加
<LinearLayout android:id="@+id/linDelete" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_toRightOf="@+id/rlSlidContent" android:orientation="vertical" > <ImageView android:id="@+id/sliding_delete" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_horizontal" android:src="@drawable/icon_item_delete" /> </LinearLayout>
public class ViewHolderClass { public static class SlideViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.sliding_delete) public ImageView btn_Delete; @BindView(R.id.rlSlidContent) public RelativeLayout mRlSlidContent; @BindView(R.id.linSlideTitle) public LinearLayout mLinSlideTitle; @BindView(R.id.tvSlideTitle) public TextView mTvSlideTitle; public SlideViewHolder(View view) { super(view); ButterKnife.bind(this, view); } } public static class ShopCarViewHolder extends SlideViewHolder { @BindView(R.id.itemTv) public TextView mItemTv; public ShopCarViewHolder(View view) { super(view); } } }
代碼如下:RecycleSlideDemo_jb51.rar
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)跟隨手指拖動(dòng)并自動(dòng)貼邊的View樣式(實(shí)例demo)
本文通過實(shí)例代碼給大家介紹了android實(shí)現(xiàn)跟隨手指拖動(dòng)并自動(dòng)貼邊的View樣式,效果非常棒,具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01android?studio?項(xiàng)目?:UI設(shè)計(jì)高精度實(shí)現(xiàn)簡單計(jì)算器
這篇文章主要介紹了android?studio?項(xiàng)目?:UI設(shè)計(jì)高精度實(shí)現(xiàn)簡單計(jì)算器,自主完成一個(gè)簡單APP的設(shè)計(jì)工作,綜合應(yīng)用已經(jīng)學(xué)到的Android?UI設(shè)計(jì)技巧,下面來看看實(shí)驗(yàn)實(shí)現(xiàn)過程2021-12-12Android中TabLayout+ViewPager實(shí)現(xiàn)tab和頁面聯(lián)動(dòng)效果
本篇文章主要介紹了Android中TabLayout+ViewPager實(shí)現(xiàn)tab和頁面聯(lián)動(dòng)效果,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06OpenGL?Shader實(shí)現(xiàn)陰影遮罩效果
這篇文章主要介紹了如何利用OpenGL?Shader實(shí)現(xiàn)陰影遮罩效果,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)OpenGL有一定幫助,需要的可以參考一下2022-02-02