Initial commit: Add webtoon viewer

This commit is contained in:
2024-12-19 14:09:30 +01:00
commit 3a566a08fa
642 changed files with 4769 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
package com.webtoonviewer.ui.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.webtoonviewer.R
import com.webtoonviewer.ui.data.TitleItem
import com.webtoonviewer.utils.CommonUtils.getEllipsizedText
import com.webtoonviewer.utils.CommonUtils.getShortNameFromEpisode
import com.webtoonviewer.utils.loadImgFromAssets
class TitleAdapter(
private val context: Context,
private val titleItems: MutableList<TitleItem>,
private val onItemClick: OnItemClickListener
) : RecyclerView.Adapter<TitleItemViewHolder>() {
interface OnItemClickListener {
fun clickToEpisodeList(titleItem: TitleItem)
fun clickToSingleEpisode(titleItem: TitleItem)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TitleItemViewHolder {
val view = LayoutInflater.from(parent.context).inflate(
R.layout.item_title,
parent,
false
)
return TitleItemViewHolder(view)
}
override fun onBindViewHolder(holder: TitleItemViewHolder, position: Int) {
val titleItem = titleItems[position]
val bitmap = loadImgFromAssets(context, titleItem.thumbnail)
if (bitmap != null) {
holder.thumbnail.setImageBitmap(bitmap)
} else {
holder.thumbnail.setImageResource(R.drawable.ic_launcher_background)
}
holder.title.text = titleItem.title
holder.tag.text = titleItem.tag
val chapterTextView = holder.chapter
if (titleItem.chapter != "") {
chapterTextView.post{
chapterTextView.text = getEllipsizedText(chapterTextView, "${getShortNameFromEpisode(titleItem.chapter)} >>")
}
}
holder.thumbnail.setOnClickListener {
onItemClick.clickToEpisodeList(titleItem)
}
holder.title.setOnClickListener {
onItemClick.clickToEpisodeList(titleItem)
}
holder.tag.setOnClickListener {
onItemClick.clickToEpisodeList(titleItem)
}
holder.chapter.setOnClickListener {
onItemClick.clickToSingleEpisode(titleItem)
}
}
override fun getItemCount(): Int {
return titleItems.size
}
fun updateItem(titleItem: TitleItem) {
val index = titleItems.indexOf(titleItem)
notifyItemChanged(index)
}
}