diff --git a/app/src/main/java/com/chwl/app/home/adapter/HomeRoomAdapter.kt b/app/src/main/java/com/chwl/app/home/adapter/HomeRoomAdapter.kt index efab20dff..bd538c2a6 100644 --- a/app/src/main/java/com/chwl/app/home/adapter/HomeRoomAdapter.kt +++ b/app/src/main/java/com/chwl/app/home/adapter/HomeRoomAdapter.kt @@ -1,9 +1,13 @@ package com.chwl.app.home.adapter +import android.graphics.Rect import android.view.View +import android.view.ViewGroup import android.widget.ImageView -import androidx.core.view.isInvisible import androidx.core.view.isVisible +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.RecycledViewPool import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chwl.app.R @@ -11,14 +15,54 @@ import com.chwl.app.ui.utils.ImageLoadUtils import com.chwl.app.ui.utils.load import com.chwl.app.ui.utils.loadFromAssets import com.chwl.core.home.bean.HomeRoomInfo +import com.example.lib_utils.AppUtils +import com.example.lib_utils.UiUtils import com.opensource.svgaplayer.SVGADrawable import com.opensource.svgaplayer.SVGAImageView /** * create by lvzebiao @2019/11/13 */ -class HomeRoomAdapter : - BaseQuickAdapter(R.layout.home_item_room) { +class HomeRoomAdapter : BaseQuickAdapter(R.layout.home_item_room) { + private var micUserItemViewPool = RecycledViewPool().apply { + setMaxRecycledViews(0, 50) + } + + private val isRTL = UiUtils.isRtl(AppUtils.getApp()) + + override fun onCreateDefViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { + return super.onCreateDefViewHolder(parent, viewType).apply { + val micUserRecyclerView = this.getView(R.id.recycler_view_users) + micUserRecyclerView.setOnTouchListener { v, event -> true } + micUserRecyclerView.setRecycledViewPool(micUserItemViewPool) + micUserRecyclerView.setHasFixedSize(true) + micUserRecyclerView.layoutManager = + LinearLayoutManager(parent.context, RecyclerView.HORIZONTAL, false).apply { + this.recycleChildrenOnDetach = true + this.isSmoothScrollbarEnabled + } + micUserRecyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() { + val offset = AppUtils.getApp().resources.getDimensionPixelOffset(R.dimen.dp_4) * -1 + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + val position = parent.getChildAdapterPosition(view) + if (position != 0) { + if (isRTL) { + outRect.right = offset + } else { + outRect.left = offset + } + } + } + }) + micUserRecyclerView.adapter = HomeRoomUserAdapter() + } + } override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) { helper.apply { @@ -28,18 +72,10 @@ class HomeRoomAdapter : setText(R.id.tv_desc, item.roomDesc) } - val avatars: Array = arrayOf( - helper.getView(R.id.iv_avatar_0), - helper.getView(R.id.iv_avatar_1), - helper.getView(R.id.iv_avatar_2), - helper.getView(R.id.iv_avatar_3), - helper.getView(R.id.iv_avatar_4) - ) - for (i in avatars.indices) { - val avatarUrl = item.micUsers?.getOrNull(i)?.avatar - avatars[i].isInvisible = avatarUrl.isNullOrBlank() - avatars[i].load(avatarUrl) - } + val micUserRecyclerView = helper.getView(R.id.recycler_view_users) + val userAdapter = micUserRecyclerView.adapter as HomeRoomUserAdapter + userAdapter.setNewData(item.micUsers) + val topView = helper.getView(R.id.iv_top) if (item.isHourTop1 == 1) { topView.setImageResource(R.drawable.home_room_bg_hour_top) diff --git a/app/src/main/java/com/chwl/app/home/adapter/HomeRoomUserAdapter.kt b/app/src/main/java/com/chwl/app/home/adapter/HomeRoomUserAdapter.kt new file mode 100644 index 000000000..3deff2219 --- /dev/null +++ b/app/src/main/java/com/chwl/app/home/adapter/HomeRoomUserAdapter.kt @@ -0,0 +1,16 @@ +package com.chwl.app.home.adapter + +import android.widget.ImageView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.chwl.app.R +import com.chwl.app.ui.utils.loadAvatar +import com.chwl.core.home.bean.MicUsersBean + +class HomeRoomUserAdapter : + BaseQuickAdapter(R.layout.home_item_room_user) { + override fun convert(helper: BaseViewHolder, item: MicUsersBean?) { + val avatarView = helper.getView(R.id.iv_avatar) + avatarView.loadAvatar(item?.avatar) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/home/fragment/HomeRecommendFragment.kt b/app/src/main/java/com/chwl/app/home/fragment/HomeRecommendFragment.kt index 87c06323f..4235e1a12 100644 --- a/app/src/main/java/com/chwl/app/home/fragment/HomeRecommendFragment.kt +++ b/app/src/main/java/com/chwl/app/home/fragment/HomeRecommendFragment.kt @@ -198,7 +198,7 @@ class HomeRecommendFragment : BaseViewBindingFragment - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@id/tv_desc" + tools:listitem="@layout/home_item_room_user" /> +