얼굴모양 출처:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginRight="10dp">
<ImageView
android:id="@+id/iv_ratingMake"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_smile"/>
</LinearLayout>
item 수는 항상 고정
package com.gyoung.movierecord.data
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.gyoung.movierecord.R
import kotlinx.android.synthetic.main.item_rating_make_post.view.*
class RatingMakePostAdapter(private val context: Context): RecyclerView.Adapter<RatingMakePostHolder>() {
var clickdIdx = 0
// xml file을 inflate한 후 viewHolder를 만든다.
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RatingMakePostHolder{
val view = LayoutInflater.from(context).inflate(R.layout.item_rating_make_post, parent,false)
return RatingMakePostHolder(view)
}
override fun getItemCount(): Int {
return 5
}
// viewholder의 항목을 구성하기 위해 호출된다.
override fun onBindViewHolder(holder: RatingMakePostHolder, position: Int) {
if(position<=clickdIdx){
holder.setSelected()
}else{
holder.setUnSeleced()
}
holder.itemView.setOnClickListener {
clickdIdx = position
this.notifyDataSetChanged()
}
}
}
class RatingMakePostHolder (itemView: View) : RecyclerView.ViewHolder(itemView){
fun setSelected(){
Glide.with(itemView.context).load(R.drawable.ic_smile_selected).into(itemView.iv_ratingMake)
}
fun setUnSeleced(){
Glide.with(itemView.context).load(R.drawable.ic_smile).into(itemView.iv_ratingMake)
}
}
val intent = Intent(this, SearchItemActivity::class.java)
startActivityForResult(intent, SEARCH_BOOK)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode== Activity.RESULT_OK){
try{
title = data!!.getStringExtra("title").toString()
author = data!!.getStringExtra("author").toString()
thumbnail = data!!.getStringExtra("thumbnail").toString()
Log.d("MakePost", title)
}catch (e : Exception){
title = ""
author = ""
thumbnail = ""
}
et_title_makePost.setText(title)
et_author_makePost.setText(author)
if(!thumbnail.isNullOrBlank()){
Glide.with(this).load(thumbnail).into(iv_mainImage_makePost)
}
}
}
interface SearchItemClickListener{
fun onClick(documents : Documents)
}
searchItemClickListener = object : SearchItemClickListener{
override fun onClick(documents: Documents) {
val intent = Intent()
intent.putExtra("title", documents.title)
intent.putExtra("author", documents.authors[0])
intent.putExtra("thumbnail", documents.thumbnail)
setResult(Activity.RESULT_OK, intent)
finish()
}
}
rv_adapter.datas = datas
rv_adapter.listener = searchItemClickListener
rv_main_searchItem.adapter = rv_adapter
override fun onBindViewHolder(holder: SearchItemMainHolder, position: Int) {
holder.bind(datas[position])
holder.itemView.setOnClickListener {
Log.d("SearchItemMainAdapter", datas[position].toString())
listener.onClick(datas[position])
}
}