Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Jimmy_buer
KotlinLearn
提交
8c3a733d
K
KotlinLearn
项目概览
Jimmy_buer
/
KotlinLearn
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
KotlinLearn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8c3a733d
编写于
3月 02, 2023
作者:
J
jimmy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
recyclerview嵌套Recyclerview 冲突解决方案
上级
b0de7e5f
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
275 addition
and
9 deletion
+275
-9
.idea/misc.xml
.idea/misc.xml
+5
-1
Base/src/main/java/com/xx/utils/manager/CenterLayoutManager.kt
...src/main/java/com/xx/utils/manager/CenterLayoutManager.kt
+58
-0
Base/src/main/java/com/xx/view/MyRecyclerView.kt
Base/src/main/java/com/xx/view/MyRecyclerView.kt
+46
-0
Base/src/main/java/com/xx/view/ParRecyclerView.kt
Base/src/main/java/com/xx/view/ParRecyclerView.kt
+39
-0
app/src/main/java/com/xxx/kotlinlearn/adapter/viewBinder/home/LearnBinder.kt
...om/xxx/kotlinlearn/adapter/viewBinder/home/LearnBinder.kt
+42
-0
app/src/main/java/com/xxx/kotlinlearn/bean/LearnBean.kt
app/src/main/java/com/xxx/kotlinlearn/bean/LearnBean.kt
+6
-0
app/src/main/java/com/xxx/kotlinlearn/bean/NeedLearnBeanWrap.kt
...c/main/java/com/xxx/kotlinlearn/bean/NeedLearnBeanWrap.kt
+5
-0
app/src/main/java/com/xxx/kotlinlearn/fragment/HomeFragment.kt
...rc/main/java/com/xxx/kotlinlearn/fragment/HomeFragment.kt
+40
-6
app/src/main/res/layout/fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+2
-2
app/src/main/res/layout/item_learn.xml
app/src/main/res/layout/item_learn.xml
+7
-0
app/src/main/res/layout/item_learn1.xml
app/src/main/res/layout/item_learn1.xml
+25
-0
未找到文件。
.idea/misc.xml
浏览文件 @
8c3a733d
...
...
@@ -5,6 +5,7 @@
<map>
<entry
key=
"../../../../layout/custom_preview.xml"
value=
"0.11757215619694397"
/>
<entry
key=
"../../.gradle/caches/transforms-3/e02e405d5d7f7951fc2dc1c87c92bf5d/transformed/jetified-coolindicator-1.0.0-beta/res/drawable/default_drawable_indicator.xml"
value=
"0.1"
/>
<entry
key=
"../../Library/Android/sdk/platforms/android-31/data/res/layout/test_list_item.xml"
value=
"0.16041666666666668"
/>
<entry
key=
"..\:/ASproject/base/Base/src/main/res/layout/layout_tab.xml"
value=
"0.22871376811594202"
/>
<entry
key=
"..\:/ASproject/base/app/src/main/res/layout/activity_login.xml"
value=
"0.36770833333333336"
/>
<entry
key=
"Base/src/main/res/drawable/bg_bottom_05_line_gray.xml"
value=
"0.1295"
/>
...
...
@@ -65,11 +66,14 @@
<entry
key=
"app/src/main/res/layout/fragment_demo.xml"
value=
"0.15885416666666666"
/>
<entry
key=
"app/src/main/res/layout/fragment_demo_load.xml"
value=
"0.20677083333333332"
/>
<entry
key=
"app/src/main/res/layout/fragment_glide.xml"
value=
"0.165625"
/>
<entry
key=
"app/src/main/res/layout/fragment_home.xml"
value=
"0.
21927083333333333
"
/>
<entry
key=
"app/src/main/res/layout/fragment_home.xml"
value=
"0.
1
"
/>
<entry
key=
"app/src/main/res/layout/fragment_rv.xml"
value=
"0.21979166666666666"
/>
<entry
key=
"app/src/main/res/layout/item_banner.xml"
value=
"0.17"
/>
<entry
key=
"app/src/main/res/layout/item_circle.xml"
value=
"0.25"
/>
<entry
key=
"app/src/main/res/layout/item_home_title.xml"
value=
"0.21"
/>
<entry
key=
"app/src/main/res/layout/item_img.xml"
value=
"0.3567708333333333"
/>
<entry
key=
"app/src/main/res/layout/item_learn.xml"
value=
"0.2828125"
/>
<entry
key=
"app/src/main/res/layout/item_learn1.xml"
value=
"0.2703804347826087"
/>
<entry
key=
"app/src/main/res/layout/item_string.xml"
value=
"0.21979166666666666"
/>
<entry
key=
"app/src/main/res/layout/layout_string.xml"
value=
"0.21875"
/>
<entry
key=
"app/src/main/res/layout/layout_student.xml"
value=
"0.2390625"
/>
...
...
Base/src/main/java/com/xx/utils/manager/CenterLayoutManager.kt
0 → 100644
浏览文件 @
8c3a733d
package
com.xx.utils.manager
import
android.content.Context
import
android.util.AttributeSet
import
android.util.DisplayMetrics
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.LinearSmoothScroller
import
androidx.recyclerview.widget.RecyclerView
class
CenterLayoutManager
:
LinearLayoutManager
{
constructor
(
context
:
Context
?)
:
super
(
context
)
constructor
(
context
:
Context
?,
orientation
:
Int
,
reverseLayout
:
Boolean
)
:
super
(
context
,
orientation
,
reverseLayout
)
constructor
(
context
:
Context
?,
attrs
:
AttributeSet
?,
defStyleAttr
:
Int
,
defStyleRes
:
Int
)
:
super
(
context
,
attrs
,
defStyleAttr
,
defStyleRes
)
override
fun
smoothScrollToPosition
(
recyclerView
:
RecyclerView
,
state
:
RecyclerView
.
State
,
position
:
Int
)
{
var
smoothScroller
=
CenterSmoothScroller
(
recyclerView
.
context
);
smoothScroller
.
targetPosition
=
position
;
startSmoothScroll
(
smoothScroller
);
}
companion
object
class
CenterSmoothScroller
:
LinearSmoothScroller
{
constructor
(
context
:
Context
?)
:
super
(
context
)
override
fun
calculateDtToFit
(
viewStart
:
Int
,
viewEnd
:
Int
,
boxStart
:
Int
,
boxEnd
:
Int
,
snapPreference
:
Int
):
Int
{
return
boxStart
+
(
boxEnd
-
boxStart
)
/
2
-
(
viewStart
+
(
viewEnd
-
viewStart
)
/
2
)
}
override
fun
calculateSpeedPerPixel
(
displayMetrics
:
DisplayMetrics
):
Float
{
return
100f
/
displayMetrics
.
densityDpi
;
}
}
}
\ No newline at end of file
Base/src/main/java/com/xx/view/MyRecyclerView.kt
0 → 100644
浏览文件 @
8c3a733d
package
com.xx.view
import
android.content.Context
import
android.util.AttributeSet
import
android.view.MotionEvent
import
androidx.recyclerview.widget.RecyclerView
import
com.xx.expand.log
class
MyRecyclerView
:
RecyclerView
{
constructor
(
context
:
Context
)
:
super
(
context
)
constructor
(
context
:
Context
,
attrs
:
AttributeSet
?)
:
super
(
context
,
attrs
)
constructor
(
context
:
Context
,
attrs
:
AttributeSet
?,
defStyleAttr
:
Int
)
:
super
(
context
,
attrs
,
defStyleAttr
)
var
ding
:
Boolean
=
false
override
fun
dispatchTouchEvent
(
ev
:
MotionEvent
?):
Boolean
{
var
canScrollVertically
=
canScrollVertically
(-
1
)
// ("这个时候是到顶了吗" + !canScrollVertically).log()
// if (canScrollVertically(-1) && ding) {//没有到顶
// ding = true
// parent.requestDisallowInterceptTouchEvent(true)
// }
val
dispatchTouchEvent
=
super
.
dispatchTouchEvent
(
ev
)
"MyRecyclerView - dispatchTouchEvent - $dispatchTouchEvent"
.
log
()
return
dispatchTouchEvent
}
override
fun
onInterceptTouchEvent
(
e
:
MotionEvent
?):
Boolean
{
var
onInterceptTouchEvent
=
super
.
onInterceptTouchEvent
(
e
)
"MyRecyclerView - onInterceptTouchEvent - $onInterceptTouchEvent"
.
log
()
return
onInterceptTouchEvent
// return onInterceptTouchEvent
}
override
fun
onTouchEvent
(
e
:
MotionEvent
?):
Boolean
{
var
onTouchEvent
=
super
.
onTouchEvent
(
e
)
"MyRecyclerView - onTouchEvent-$onTouchEvent"
.
log
()
return
onTouchEvent
}
}
\ No newline at end of file
Base/src/main/java/com/xx/view/ParRecyclerView.kt
0 → 100644
浏览文件 @
8c3a733d
package
com.xx.view
import
android.content.Context
import
android.util.AttributeSet
import
android.view.MotionEvent
import
androidx.recyclerview.widget.RecyclerView
import
com.xx.expand.log
class
ParRecyclerView
:
RecyclerView
{
constructor
(
context
:
Context
)
:
super
(
context
)
constructor
(
context
:
Context
,
attrs
:
AttributeSet
?)
:
super
(
context
,
attrs
)
constructor
(
context
:
Context
,
attrs
:
AttributeSet
?,
defStyleAttr
:
Int
)
:
super
(
context
,
attrs
,
defStyleAttr
)
override
fun
dispatchTouchEvent
(
ev
:
MotionEvent
?):
Boolean
{
var
dispatchTouchEvent
=
super
.
dispatchTouchEvent
(
ev
)
"ParRecyclerView - dispatchTouchEvent - $dispatchTouchEvent"
.
log
()
return
dispatchTouchEvent
}
override
fun
onInterceptTouchEvent
(
e
:
MotionEvent
?):
Boolean
{
var
onInterceptTouchEvent
=
super
.
onInterceptTouchEvent
(
e
)
"ParRecyclerView - onInterceptTouchEvent - $onInterceptTouchEvent"
.
log
()
return
onInterceptTouchEvent
}
override
fun
onTouchEvent
(
e
:
MotionEvent
?):
Boolean
{
var
onTouchEvent
=
super
.
onTouchEvent
(
e
)
"ParRecyclerView - onTouchEvent--$onTouchEvent"
.
log
()
return
onTouchEvent
}
}
\ No newline at end of file
app/src/main/java/com/xxx/kotlinlearn/adapter/viewBinder/home/LearnBinder.kt
0 → 100644
浏览文件 @
8c3a733d
package
com.xxx.kotlinlearn.adapter.viewBinder.home
import
android.view.LayoutInflater
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
com.drake.brv.utils.linear
import
com.drake.brv.utils.setup
import
com.xx.utils.manager.CenterLayoutManager
import
com.xxx.kotlinlearn.R
import
com.xxx.kotlinlearn.bean.LearnBean
import
com.xxx.kotlinlearn.bean.NeedLearnBeanWrap
import
com.xxx.kotlinlearn.databinding.ItemLearn1Binding
import
com.xxx.kotlinlearn.databinding.ItemLearnBinding
import
me.drakeet.multitype.ItemViewBinder
class
LearnBinder
:
ItemViewBinder
<
NeedLearnBeanWrap
,
LearnBinder
.
BannerHolder
>()
{
class
BannerHolder
(
var
binding
:
ItemLearnBinding
)
:
RecyclerView
.
ViewHolder
(
binding
.
root
)
{
fun
processLogic
(
bean
:
NeedLearnBeanWrap
)
{
binding
.
rv
.
linear
(
orientation
=
RecyclerView
.
VERTICAL
).
setup
{
addType
<
LearnBean
>(
R
.
layout
.
item_learn1
)
onBind
{
var
binding1
=
getBinding
<
ItemLearn1Binding
>()
binding1
.
tvTitle
.
text
=
getModel
<
LearnBean
>().
title
}
}.
models
=
bean
.
learnBeanList
}
}
override
fun
onCreateViewHolder
(
inflater
:
LayoutInflater
,
parent
:
ViewGroup
):
BannerHolder
{
return
BannerHolder
(
ItemLearnBinding
.
inflate
(
inflater
,
parent
,
false
))
}
override
fun
onBindViewHolder
(
holder
:
BannerHolder
,
item
:
NeedLearnBeanWrap
)
{
holder
.
processLogic
(
item
)
}
}
\ No newline at end of file
app/src/main/java/com/xxx/kotlinlearn/bean/LearnBean.kt
0 → 100644
浏览文件 @
8c3a733d
package
com.xxx.kotlinlearn.bean
data class
LearnBean
(
val
title
:
String
,
val
desc
:
String
=
""
,
)
\ No newline at end of file
app/src/main/java/com/xxx/kotlinlearn/bean/NeedLearnBeanWrap.kt
0 → 100644
浏览文件 @
8c3a733d
package
com.xxx.kotlinlearn.bean
data class
NeedLearnBeanWrap
(
val
learnBeanList
:
ArrayList
<
LearnBean
>
)
app/src/main/java/com/xxx/kotlinlearn/fragment/HomeFragment.kt
浏览文件 @
8c3a733d
...
...
@@ -4,10 +4,9 @@ import android.os.Bundle
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.xx.base.BaseBindingFragment
import
com.xxx.kotlinlearn.adapter.viewBinder.home.BannerBinder
import
com.xxx.kotlinlearn.adapter.viewBinder.home.LearnBinder
import
com.xxx.kotlinlearn.adapter.viewBinder.home.TitleBinder
import
com.xxx.kotlinlearn.bean.BannerBean
import
com.xxx.kotlinlearn.bean.BannerBeanWrap
import
com.xxx.kotlinlearn.bean.TitleBean
import
com.xxx.kotlinlearn.bean.*
import
com.xxx.kotlinlearn.databinding.FragmentHomeBinding
import
me.drakeet.multitype.MultiTypeAdapter
...
...
@@ -25,9 +24,10 @@ class HomeFragment : BaseBindingFragment<FragmentHomeBinding>() {
multiTypeAdapter
=
MultiTypeAdapter
()
multiTypeAdapter
.
register
(
BannerBeanWrap
::
class
.
java
,
BannerBinder
())
multiTypeAdapter
.
register
(
TitleBean
::
class
.
java
,
TitleBinder
())
multiTypeAdapter
.
register
(
NeedLearnBeanWrap
::
class
.
java
,
LearnBinder
())
d
.
recyclerView
.
adapter
=
multiTypeAdapter
d
.
recyclerView
.
adapter
=
multiTypeAdapter
multiTypeAdapter
.
items
=
getData
()
}
...
...
@@ -66,8 +66,42 @@ class HomeFragment : BaseBindingFragment<FragmentHomeBinding>() {
var
allList
=
ArrayList
<
Any
>();
allList
.
add
(
bannerBeanWrap
)
var
titleBean
=
TitleBean
(
"需要学习的内容"
)
allList
.
add
(
titleBean
)
for
(
i
in
0
..
20
)
{
var
titleBean
=
TitleBean
(
"需要学习的内容"
)
allList
.
add
(
titleBean
)
}
//横向需要学习的内容
var
learnBeanList
=
ArrayList
<
LearnBean
>()
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
learnBeanList
.
add
(
LearnBean
(
"你好"
))
var
learnBeanWrap
=
NeedLearnBeanWrap
(
learnBeanList
)
allList
.
add
(
learnBeanWrap
)
return
allList
}
...
...
app/src/main/res/layout/fragment_home.xml
浏览文件 @
8c3a733d
...
...
@@ -8,13 +8,13 @@
tools:ignore=
"MissingDefaultResource"
>
<
androidx.recyclerview.widget.
RecyclerView
<
com.xx.view.Par
RecyclerView
android:id=
"@+id/recyclerView"
android:layout_marginTop=
"85dp"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</
androidx.recyclerview.widget.
RecyclerView>
</
com.xx.view.Par
RecyclerView>
<LinearLayout
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/item_learn.xml
0 → 100644
浏览文件 @
8c3a733d
<?xml version="1.0" encoding="utf-8"?>
<com.xx.view.MyRecyclerView
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:id=
"@+id/rv"
android:layout_height=
"500dp"
>
</com.xx.view.MyRecyclerView>
\ No newline at end of file
app/src/main/res/layout/item_learn1.xml
0 → 100644
浏览文件 @
8c3a733d
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<data>
</data>
<com.xx.view.round.RoundCropViewLayout
android:id=
"@+id/rc"
android:layout_width=
"45dp"
app:rv_cornerRadius=
"45dp"
app:rv_backgroundColor=
"@color/red_400"
android:layout_height=
"45dp"
>
<TextView
android:id=
"@+id/tvTitle"
android:layout_width=
"wrap_content"
android:layout_centerInParent=
"true"
android:layout_height=
"wrap_content"
>
</TextView>
</com.xx.view.round.RoundCropViewLayout>
</layout>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录