Skip to content

Commit 9f4e0f6

Browse files
authored
Merge pull request #108 from AlanCheen/feature/header-footer-swipe
Feature/header footer swipe
2 parents 7b29afb + ef901f9 commit 9f4e0f6

38 files changed

+376
-259
lines changed

app/src/main/java/me/yifeiyuan/flapdev/MainActivity.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MainActivity : AppCompatActivity() {
3030

3131
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
3232
val navView: NavigationView = findViewById(R.id.nav_view)
33+
navView.setItemIconTintList(null)
3334
val toggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.nav_app_bar_open_drawer_description, R.string.navigation_drawer_close)
3435
drawerLayout.setDrawerListener(toggle)
3536
toggle.syncState()
@@ -77,13 +78,9 @@ class MainActivity : AppCompatActivity() {
7778
subtitle = "Header、Footer"
7879
replace(HeaderFooterTestcase::class.java)
7980
}
80-
R.id.nav_layout_delegate -> {
81-
subtitle = "LayoutAdapterDelegate"
82-
replace(LayoutAdapterDelegateTestcase::class.java)
83-
}
8481
R.id.nav_layout_delegate_dsl -> {
85-
subtitle = "LayoutAdapterDelegate DSL"
86-
replace(LayoutDelegateDSLTestcase::class.java)
82+
subtitle = "AdapterDelegate DSL"
83+
replace(AdapterDelegateDSLTestcase::class.java)
8784
}
8885
R.id.nav_dismiss -> {
8986
subtitle = "滑动删除&拖放"

app/src/main/java/me/yifeiyuan/flapdev/testcases/LayoutDelegateDSLTestcase.kt renamed to app/src/main/java/me/yifeiyuan/flapdev/testcases/AdapterDelegateDSLTestcase.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,27 @@ package me.yifeiyuan.flapdev.testcases
22

33
import android.util.Log
44
import android.view.View
5+
import android.widget.ImageView
56
import me.yifeiyuan.flap.FlapAdapter
7+
import me.yifeiyuan.flap.delegate.LayoutAdapterDelegate
68
import me.yifeiyuan.flap.delegate.adapterDelegate
79
import me.yifeiyuan.flap.ext.bindButton
810
import me.yifeiyuan.flap.ext.bindTextView
11+
import me.yifeiyuan.flap.ext.bindView
912
import me.yifeiyuan.flapdev.R
13+
import me.yifeiyuan.flapdev.components.SimpleImageModel
1014
import me.yifeiyuan.flapdev.components.SimpleTextModel
1115
import me.yifeiyuan.flapdev.components.TestAllModel
1216
import me.yifeiyuan.flapdev.mockMultiTypeModels
1317

1418
private const val TAG = "LayoutDelegateDSLTest"
1519

1620
/**
21+
* 测试 AdapterDelegate DSL
22+
*
1723
* Created by 程序亦非猿 on 2022/8/4.
1824
*/
19-
class LayoutDelegateDSLTestcase : BaseTestcaseFragment() {
25+
class AdapterDelegateDSLTestcase : BaseTestcaseFragment() {
2026

2127
override fun onInit(view: View) {
2228
super.onInit(view)
@@ -121,7 +127,16 @@ class LayoutDelegateDSLTestcase : BaseTestcaseFragment() {
121127
}
122128
}
123129

124-
adapter.registerAdapterDelegates(simpleTextDelegate, testAllDelegate)
130+
val simpleImageDelegate = LayoutAdapterDelegate(SimpleImageModel::class.java,
131+
R.layout.flap_item_simple_image) { model ->
132+
bindView<ImageView>(R.id.logo) {
133+
setOnClickListener {
134+
toast("simpleImageDelegate clicked")
135+
}
136+
}
137+
}
138+
139+
adapter.registerAdapterDelegates(simpleTextDelegate, simpleImageDelegate, testAllDelegate)
125140
}
126141

127142
override fun createAdapter(): FlapAdapter {

app/src/main/java/me/yifeiyuan/flapdev/testcases/HeaderFooterTestcase.kt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package me.yifeiyuan.flapdev.testcases
22

3+
import android.graphics.Color
4+
import android.graphics.drawable.ColorDrawable
35
import android.util.Log
46
import android.view.LayoutInflater
57
import android.view.View
8+
import androidx.recyclerview.widget.ItemTouchHelper
69
import me.yifeiyuan.flap.ext.HeaderFooterAdapter
10+
import me.yifeiyuan.flap.ext.SwipeDragHelper
711
import me.yifeiyuan.flapdev.R
812

913
private const val TAG = "HeaderFooterTestcase"
@@ -43,5 +47,35 @@ class HeaderFooterTestcase : BaseTestcaseFragment() {
4347
}
4448

4549
recyclerView.adapter = headerFooterAdapter
50+
51+
SwipeDragHelper(headerFooterAdapter)
52+
.withDragEnable(true)
53+
.withSwipeEnable(true)
54+
.withDragFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN)
55+
.withSwipeFlags(ItemTouchHelper.START or ItemTouchHelper.END)
56+
.withSwipeBackground(ColorDrawable(Color.parseColor("#ff0000")))
57+
.onItemSwiped {
58+
toast("滑动删除了一个 item , position=$it")
59+
}
60+
.onItemMoved { fromPosition, toPosition ->
61+
toast("移动交换了 $fromPosition to $toPosition")
62+
}
63+
.onDragStarted { viewHolder, adapterPosition ->
64+
Log.d(TAG, "开始拖动 position=$adapterPosition")
65+
toast("开始拖动 position=$adapterPosition")
66+
}
67+
.onDragReleased { viewHolder, adapterPosition ->
68+
Log.d(TAG, "拖动结束 position=$adapterPosition")
69+
toast("拖动结束 position=$adapterPosition")
70+
}
71+
.onSwipeStarted { viewHolder, adapterPosition ->
72+
Log.d(TAG, "滑动开始 position=$adapterPosition")
73+
toast("滑动开始 position=$adapterPosition")
74+
}
75+
.onSwipeReleased { viewHolder, adapterPosition ->
76+
Log.d(TAG, "滑动结束 position=$adapterPosition")
77+
toast("滑动结束 position=$adapterPosition")
78+
}
79+
.attachToRecyclerView(recyclerView)
4680
}
4781
}

app/src/main/java/me/yifeiyuan/flapdev/testcases/LayoutAdapterDelegateTestcase.kt

Lines changed: 0 additions & 63 deletions
This file was deleted.

app/src/main/java/me/yifeiyuan/flapdev/testcases/MultiTypeTestcase.kt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package me.yifeiyuan.flapdev.testcases
22

3+
import android.graphics.Color
4+
import android.graphics.drawable.ColorDrawable
35
import android.view.Menu
46
import android.view.MenuInflater
57
import android.view.MenuItem
68
import android.view.View
79
import androidx.recyclerview.widget.GridLayoutManager
10+
import androidx.recyclerview.widget.ItemTouchHelper
811
import androidx.recyclerview.widget.RecyclerView
9-
import me.yifeiyuan.flap.decoration.LinearSpaceItemDecoration
10-
import me.yifeiyuan.flap.decoration.SpaceItemDecoration
12+
import me.yifeiyuan.flap.ext.SwipeDragHelper
1113
import me.yifeiyuan.flap.skeleton.Skeleton
1214
import me.yifeiyuan.flap.widget.FlapGridLayoutManager
1315
import me.yifeiyuan.flap.widget.FlapLinearLayoutManager
1416
import me.yifeiyuan.flap.widget.FlapStaggeredGridLayoutManager
1517
import me.yifeiyuan.flapdev.R
1618
import me.yifeiyuan.flapdev.components.ZeroHeightModel
1719
import me.yifeiyuan.flapdev.mockMultiTypeModels
18-
import me.yifeiyuan.flapdev.toPixel
1920

2021
/**
2122
* 多类型测试
@@ -57,6 +58,21 @@ class MultiTypeTestcase : BaseTestcaseFragment() {
5758
.withEmptyViewHelper(adapter.emptyViewHelper)
5859
.show()
5960

61+
SwipeDragHelper(adapter)
62+
.withDragEnable(true)
63+
.withSwipeEnable(true)
64+
.withDragFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN)
65+
.withSwipeFlags(ItemTouchHelper.START or ItemTouchHelper.END)
66+
// .withSwipeBackground(ColorDrawable(Color.parseColor("#ff0000")))
67+
.withSwipeBackgroundColor(Color.parseColor("#ff0000"))
68+
.onItemSwiped {
69+
toast("滑动删除了一个 item , position=$it")
70+
}
71+
.onItemMoved { fromPosition, toPosition ->
72+
toast("移动交换了 $fromPosition to $toPosition")
73+
}
74+
.attachToRecyclerView(recyclerView)
75+
6076
recyclerView.addItemDecoration(linearItemDecoration)
6177
}
6278

app/src/main/java/me/yifeiyuan/flapdev/testcases/SwipeAndDragTestcase.kt

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import me.yifeiyuan.flap.FlapAdapter
99
import me.yifeiyuan.flap.ext.SwipeDragHelper
1010

1111

12-
private const val TAG = "ItemClicksTestcase"
12+
private const val TAG = "SwipeAndDragTestcase"
1313

1414
/**
1515
* 测试滑动删除&拖放
@@ -21,18 +21,37 @@ class SwipeAndDragTestcase : BaseTestcaseFragment() {
2121
override fun onInit(view: View) {
2222
super.onInit(view)
2323

24-
val swipeDragHelper = SwipeDragHelper(adapter)
24+
SwipeDragHelper(adapter)
2525
.withDragEnable(true)
2626
.withSwipeEnable(true)
27+
// .forVerticalList()
28+
// .forHorizontalList()
29+
// .forGrid()
2730
.withDragFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN)
2831
.withSwipeFlags(ItemTouchHelper.START or ItemTouchHelper.END)
2932
.withSwipeBackground(ColorDrawable(Color.parseColor("#ff0000")))
30-
.onItemDismiss {
33+
.onItemSwiped {
3134
toast("滑动删除了一个 item , position=$it")
3235
}
33-
.onItemMove { fromPosition, toPosition ->
36+
.onItemMoved { fromPosition, toPosition ->
3437
toast("移动交换了 $fromPosition to $toPosition")
3538
}
39+
.onDragStarted { viewHolder, adapterPosition ->
40+
Log.d(TAG, "开始拖动 position=$adapterPosition")
41+
toast("开始拖动 position=$adapterPosition")
42+
}
43+
.onDragReleased { viewHolder, adapterPosition ->
44+
Log.d(TAG, "拖动结束 position=$adapterPosition")
45+
toast("拖动结束 position=$adapterPosition")
46+
}
47+
.onSwipeStarted { viewHolder, adapterPosition ->
48+
Log.d(TAG, "滑动开始 position=$adapterPosition")
49+
toast("滑动开始 position=$adapterPosition")
50+
}
51+
.onSwipeReleased { viewHolder, adapterPosition ->
52+
Log.d(TAG, "滑动结束 position=$adapterPosition")
53+
toast("滑动结束 position=$adapterPosition")
54+
}
3655
.attachToRecyclerView(recyclerView)
3756

3857
recyclerView.addItemDecoration(spaceItemDecoration)
2.98 KB
Loading
2.46 KB
Loading
3.78 KB
Loading
2.42 KB
Loading

0 commit comments

Comments
 (0)