social-aggregator/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostDetailsRecycler.kt

90 lines
3.0 KiB
Kotlin
Raw Normal View History

package pl.edu.amu.wmi.socialaggregator.viewholders
2020-01-11 18:18:34 +01:00
import android.annotation.SuppressLint
import android.view.LayoutInflater
2020-01-09 20:59:24 +01:00
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
2020-01-09 20:59:24 +01:00
import android.widget.LinearLayout
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
2020-01-09 20:59:24 +01:00
import com.squareup.picasso.Picasso
import io.reactivex.Observable
import pl.edu.amu.wmi.socialaggregator.R
2020-01-11 18:18:34 +01:00
import pl.edu.amu.wmi.socialaggregator.socialplatforms.NotApplicableException
import pl.edu.amu.wmi.socialaggregator.socialplatforms.Post
2020-01-11 18:18:34 +01:00
import pl.edu.amu.wmi.socialaggregator.socialplatforms.SocialPlatform
2020-01-11 18:18:34 +01:00
@SuppressLint("CheckResult")
class PostDetailsRecycler(
2020-01-09 20:59:24 +01:00
postsObservable: Observable<List<Post>>
) : RecyclerView.Adapter<PostDetailsRecycler.ViewHolder>() {
val posts = emptyList<Post>().toMutableList()
init {
2020-01-11 18:18:34 +01:00
postsObservable
.subscribe {
posts.addAll(it)
notifyDataSetChanged()
}
2020-01-09 20:59:24 +01:00
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layout = LayoutInflater.from(parent.context)
.inflate(R.layout.item_post, parent, false) as ConstraintLayout
val dateTime = layout.findViewById<TextView>(R.id.postDateTimeTextView)
val postContent = layout.findViewById<TextView>(R.id.postContentTextView)
val imageView = layout.findViewById<ImageView>(R.id.postSocialImage)
2020-01-09 20:59:24 +01:00
val imagesContainer = layout.findViewById<LinearLayout>(R.id.imagesContainer)
2020-01-09 20:59:24 +01:00
return ViewHolder(layout, dateTime, postContent, imageView, imagesContainer)
}
override fun getItemCount(): Int {
return posts.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val post = posts[position]
holder.dateTime.text = post.dateTime
holder.postContent.text = post.content
2020-01-09 20:59:24 +01:00
holder.postContent.visibility = if (post.content.isBlank()) View.GONE else View.VISIBLE
holder.imageView.setImageResource(post.social.getLogo())
2020-01-09 20:59:24 +01:00
holder.imagesContainer.apply {
removeAllViews()
post.images.forEach {
val imageView = ImageView(context)
addView(imageView)
imageView.apply {
(layoutParams as ViewGroup.MarginLayoutParams)
.apply {
marginEnd = 10
}
}
Picasso.with(context)
.load(it)
.placeholder(android.R.drawable.ic_menu_gallery)
.resize(250, 250)
.centerCrop()
.into(imageView)
}
}
}
class ViewHolder(
root: ConstraintLayout,
val dateTime: TextView,
val postContent: TextView,
2020-01-09 20:59:24 +01:00
val imageView: ImageView,
val imagesContainer: LinearLayout
) : RecyclerView.ViewHolder(root)
}