boorujelly/app/src/main/java/com/example/testes/ImageGridFragment.kt

71 lines
2.5 KiB
Kotlin

package com.example.testes
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
class ImageGridFragment(val images: List<BooruImage>) : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val layoutView = inflater.inflate(R.layout.fragment_image_grid, container, false)
val recyclerView : RecyclerView = layoutView.findViewById(R.id.imageGridRecV)
recyclerView.adapter = ImageGridAdapter(images)
recyclerView.layoutManager = GridLayoutManager(layoutView.context, 3)
return layoutView
}
inner class ImageGridAdapter(val imageList: List<BooruImage>) :
RecyclerView.Adapter<ImageGridAdapter.ViewHolder>() {
lateinit var context: Context;
/* Creates and inflates view and return FlowerViewHolder. */
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
context = parent.context;
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.image_grid_item, parent, false)
return ViewHolder(view)
}
/* Gets current flower and uses it to bind view. */
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
Glide.with(context)
.load(imageList[position].preview_url)
.placeholder(ContextCompat.getDrawable(context, R.drawable.ic_launcher_foreground))
.into(holder.imageview)
holder.imageview.setOnClickListener(holder)
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
var imageview: ImageView = itemView.findViewById(R.id.image)
override fun onClick(view: View?) {
val intent = Intent(view?.context, ImageViewerActivity::class.java)
startActivity(intent)
}
}
override fun getItemCount(): Int = imageList.size
}
}