您好,登錄后才能下訂單哦!
本文實例為大家分享了SwipeLayout實現(xiàn)側(cè)拉刪除編輯的具體代碼,供大家參考,具體內(nèi)容如下
第一步、添加依賴
dependencies { compile 'com.android.support:recyclerview-v7:21.0.0' compile 'com.android.support:support-v4:20.+' compile "com.daimajia.swipelayout:library:1.2.0@aar" }
第二步、布局文件
//建議最好是在BottomView里面添加layout_gravity屬性,或者在代碼里面添加 <com.daimajia.swipe.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="80dp"> <!-- Bottom View Start--> <LinearLayout android:background="#66ddff00" android:id="@+id/bottom_wrapper" android:layout_width="160dp" android:weightSum="1" android:layout_height="match_parent"> <!--What you want to show--> <!--在這里寫我們側(cè)滑后顯示出來的控件--> <!-通常是幾個TextView或者Button---> </LinearLayout> <!-- Bottom View End--> <!-- Surface View Start --> <LinearLayout android:padding="10dp" android:background="#ffffff" android:layout_width="match_parent" android:layout_height="match_parent"> <!--What you want to show in SurfaceView--> <!--這里寫我們條目顯示的內(nèi)容的布局--> </LinearLayout> <!-- Surface View End --> </com.daimajia.swipe.SwipeLayout>
第三步、在Activity中得到SwipeLayout實例.
SwipeLayout swipeLayout = (SwipeLayout) view.findViewById(R.id.swipelayout); //設(shè)置側(cè)拉的模式 swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown); //如果布局文件里面有l(wèi)ayout_gravity屬性,這句可以忽略 //swipeLayout.addDrag(SwipeLayout.DragEdge.Left, findViewById(R.id.bottom_wrapper));
到此為止,一個條目的側(cè)滑功能就實現(xiàn)了。
如果我們在Listview里面使用這個功能,那么我們需要繼承BaseSwipeAdapter,并且復寫里面的幾個方法:
//獲取swipeLayout布局 @Override public int getSwipeLayoutResourceId(int position) { return R.id.swipelayout; } //生成條目布局,相當于BaseAdapter里面的getView()方法 @Override public View generateView(int position, ViewGroup parent) { View view = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null); SwipeLayout swipeLayout = (SwipeLayout) view.findViewById(R.id.swipelayout); //這里寫對布局中控件的一些初始化 swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown); return view; } //為條目里面的控件賦值 @Override public void fillValues(int position, View convertView) { } //下面的幾個方法是BaseAdapter里面的方法,BaseSwipeAdapter也是繼承自BaseAdapter @Override public int getCount() { return 0; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; }
這樣,一個ListView的條目側(cè)滑就基本實現(xiàn)了。點擊刪除/編輯的代碼我們在方法generateView()里面實現(xiàn)。下面為Listview添加條目點擊事件:
//此處的swipeLayout是generateView()里面從條目布局里面獲取的 swipeLayout.getSurfaceView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } });
如果我們需要在側(cè)滑的時候?qū)崿F(xiàn)其他邏輯的話,我們可以添加側(cè)滑監(jiān)聽:
swipeLayout.addSwipeListener(new SwipeLayout.SwipeListener() { @Override public void onClose(SwipeLayout layout) { //when the SurfaceView totally cover the BottomView. } @Override public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset) { //you are swiping. } @Override public void onStartOpen(SwipeLayout layout) { } @Override public void onOpen(SwipeLayout layout) { //when the BottomView totally show. } @Override public void onStartClose(SwipeLayout layout) { } @Override public void onHandRelease(SwipeLayout layout, float xvel, float yvel) { //when user's hand released. } });
到此,ListView側(cè)滑功能基本實現(xiàn)。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。