连假第二天,在这边先祝大家连假快乐啦,那延续昨天,我们现在已经把String的List拿到了,现在要做的就很简单,就是我们透过Recyclerview把它显示出来就可! 那麽我们就来啦
既然提到recyclerview,我们首先就要把在fragment_add_invitation.xml的image改成recyclerview啦!
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_add_invitation_image"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
再过来我们要新增itemView
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/banner_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
</RelativeLayout>
</layout>
这边的Adapter就跟之前的做法一样啦,只是我们要把里面的资料改成String,因为我们会直接把List传进去,然後直接在onBindViewHolder透过Glide把图片显示出来就好啦!
package com.example.petsmatchingapp.ui.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.example.petsmatchingapp.databinding.BannerItemLayoutBinding
import com.example.petsmatchingapp.utils.Constant
import kotlinx.android.synthetic.main.banner_item_layout.view.*
import timber.log.Timber
class MultiplePhotoAdapter(): ListAdapter<String, MultiplePhotoAdapter.MyViewHolder>(DiffCallback) {
companion object DiffCallback : DiffUtil.ItemCallback<String>() {
override fun areItemsTheSame(oldItem: String, newItem: String): Boolean {
return oldItem === newItem
}
override fun areContentsTheSame(oldItem: String, newItem: String): Boolean {
return oldItem == oldItem
}
}
class MyViewHolder(val binding: BannerItemLayoutBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: String) {
binding.executePendingBindings()
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
return MyViewHolder(BannerItemLayoutBinding.inflate(LayoutInflater.from(parent.context)))
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val model = getItem(position)
Timber.d("测试inside adapter: $model")
Constant.loadPetImage(model,holder.itemView.banner_image)
holder.bind(model)
}
}
我们一样要先初始化我们的adapter
private lateinit var multipleAdapter: MultiplePhotoAdapter
private fun setAdapter(){
val banner = binding.rvAddInvitationImage
multipleAdapter = MultiplePhotoAdapter()
banner.adapter = multipleAdapter
val linearLayout = LinearLayoutManager(requireContext())
linearLayout.orientation = LinearLayoutManager.HORIZONTAL
banner.layoutManager = linearLayout
}
然後我们再我们昨天拿到List的地方,我们透过submit,把list传进去
fun saveImageSuccessful(uriList: List<Uri>){
showSnackBar(resources.getString(R.string.update_pet_image_successful),false)
val list =mutableListOf<String>()
for(i in uriList){
list.add(i.toString())
}
multipleAdapter.submitList(list)
}
太棒啦,这样我们就完成啦,那就期待明天啦!
<<: Day26:今天来聊一下Hacking Mobile Platforms
HI,到了第二天,感觉每天写一篇文章的感觉真的会有一种怠惰感,还是好好习惯吧 什麽是 React 先...
前言 Flutter入门 Flutter 是 Goole 推出的开源 UI 工具包,通过 Dart ...
前情提要 艾草:「来,既然要学习物件让我带你瞧瞧这个秘方。」 (从异空间拿出一张古老透着神秘光泽的纸...
昨天制作了按钮由下往上的动画,今天要加上变化,让昨天的动画看起来不那麽单调。 加入< KeyF...
MyBatis设定 ...