Skip to content

Commit b7091a1

Browse files
committed
chore: add sample images, lib private constructors
1 parent 56e5977 commit b7091a1

File tree

9 files changed

+46
-15
lines changed

9 files changed

+46
-15
lines changed

app/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ android {
3535
enabled = true
3636
}
3737
repositories {
38+
mavenCentral()
3839
jcenter()
3940
}
4041
compileOptions {
@@ -74,4 +75,7 @@ dependencies {
7475
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-rc02'
7576

7677
implementation project(':commonadapter')
78+
79+
implementation 'com.github.bumptech.glide:glide:4.11.0'
80+
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
7781
}

app/src/main/java/com/mmicu/demo/feed/presentation/FeedFragment.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.lifecycle.Observer
1111
import androidx.recyclerview.widget.LinearLayoutManager
1212
import com.mmicu.commonadapter.CommonItemHolder
1313
import com.mmicu.commonadapter.CommonRecyclerViewAdapter
14+
import com.mmicu.commonadapter.CommonRecyclerViewAdapterImpl
1415
import com.mmicu.demo.R
1516
import com.mmicu.demo.core.AppRecyclerViewAdapter
1617
import com.mmicu.demo.databinding.FragmentFeedBinding
@@ -22,7 +23,7 @@ class FeedFragment : Fragment(),
2223

2324
private val sampleMovieList = mutableListOf<CommonItemHolder<*>>()
2425
private lateinit var binding: FragmentFeedBinding
25-
private lateinit var recyclerViewAdapterImpl: CommonRecyclerViewAdapter
26+
private lateinit var recyclerViewAdapter: CommonRecyclerViewAdapter
2627

2728
private val feedViewModel: FeedViewModel by sharedViewModel()
2829

@@ -40,12 +41,12 @@ class FeedFragment : Fragment(),
4041

4142
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4243
super.onViewCreated(view, savedInstanceState)
43-
44-
recyclerViewAdapterImpl = AppRecyclerViewAdapter(
44+
45+
recyclerViewAdapter = AppRecyclerViewAdapter(
4546
sampleMovieList
4647
)
4748

48-
recyclerViewAdapterImpl.setItemClickListener { pos, data, view ->
49+
recyclerViewAdapter.setItemClickListener { pos, data, view ->
4950
Toast.makeText(
5051
context,
5152
"Item clicked $pos",
@@ -54,7 +55,7 @@ class FeedFragment : Fragment(),
5455
}
5556
binding.rvFeed.layoutManager =
5657
LinearLayoutManager(context)
57-
binding.rvFeed.adapter = recyclerViewAdapterImpl
58+
binding.rvFeed.adapter = recyclerViewAdapter
5859

5960
addObservers()
6061
}
@@ -63,7 +64,7 @@ class FeedFragment : Fragment(),
6364
feedViewModel.feedList.observe(this, Observer {
6465
sampleMovieList.clear()
6566
sampleMovieList.addAll(it)
66-
recyclerViewAdapterImpl.notifyDataSetChanged()
67+
recyclerViewAdapter.notifyDataSetChanged()
6768
})
6869
}
6970
}

app/src/main/java/com/mmicu/demo/feed/presentation/itemviewholder/CommonItems.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
package com.mmicu.demo.feed.presentation.itemviewholder
22

3+
import android.view.View
4+
import com.bumptech.glide.Glide
35
import com.mmicu.demo.R
46
import com.mmicu.demo.feed.domain.model.MovieModel
57
import com.mmicu.demo.feed.domain.model.StatusModel
68
import com.mmicu.commonadapter.CommonItemHolder
9+
import kotlinx.android.synthetic.main.item_feed_movie.view.*
710

811
data class MovieFeedItemHolder(
912
override var data: MovieModel?,
1013
override var layoutId: Int = R.layout.item_feed_movie,
1114
override var variableId: Int?
1215
) :
13-
CommonItemHolder<MovieModel>
16+
CommonItemHolder<MovieModel> {
17+
override fun onBindViewHolder(itemView: View) {
18+
super.onBindViewHolder(itemView)
19+
20+
Glide
21+
.with(itemView)
22+
.load(data?.imageUrl)
23+
.centerCrop()
24+
.into(itemView.feedImage)
25+
}
26+
}
1427

1528
data class StatusFeedItemHolder(
1629
override var data: StatusModel?,

app/src/main/res/layout/item_feed_movie.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
android:orientation="vertical">
2424

2525
<ImageView
26+
android:id="@+id/feedImage"
2627
android:layout_width="match_parent"
2728
android:layout_height="@dimen/feed_img_height"
2829
android:background="@android:color/darker_gray"

app/src/main/res/raw/fetch_feed_response.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
"id": "0",
55
"title": "Parasite",
6-
"imageUrl": "",
6+
"imageUrl": "https://miro.medium.com/max/1400/1*cNkte5WPBwnr3jFqetb5gA.jpeg",
77
"description": "All unemployed, Ki-taek and his family take peculiar interest in the wealthy and glamorous Parks, as they ingratiate themselves into their lives and get entangled in an unexpected incident.",
88
"type": "movie"
99
},
@@ -16,14 +16,14 @@
1616
{
1717
"id": "2",
1818
"title": "Little Women",
19-
"imageUrl": "",
19+
"imageUrl": "https://consequenceofsound.net/wp-content/uploads/2019/08/greta-gerwig-little-women.jpg",
2020
"description": "Jo March reflects back and forth on her life, telling the beloved story of the March sisters - four young women each determined to live life on their own terms.",
2121
"type": "movie"
2222
},
2323
{
2424
"id": "3",
2525
"title": "1917",
26-
"imageUrl": "",
26+
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMGQ0N2Y3MzQtNWVhYi00OWYwLWFlZmQtYTkyOTliYzI4YzJmXkEyXkFqcGdeQWFybm8@._V1_.jpg",
2727
"description": "Two young British soldiers during the First World War are given an impossible mission: deliver a message deep in enemy territory that will stop 1,600 men, and one of the soldiers' brothers, from walking straight into a deadly trap.",
2828
"type": "movie"
2929
},

commonadapter/src/main/java/com/mmicu/commonadapter/CommonRecyclerViewAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ abstract class CommonRecyclerViewAdapter(
1313
listCommonHolder: MutableList<CommonItemHolder<*>>
1414
) : RecyclerView.Adapter<CommonViewHolder>() {
1515

16-
private val commonRecyclerViewAdapter = CommonRecyclerViewAdapterImpl(listCommonHolder)
16+
private val commonRecyclerViewAdapter = CommonRecyclerViewAdapterImpl.initialize(listCommonHolder)
1717

1818
/**
1919
* Sets a listener invoked when an item is clicked

commonadapter/src/main/java/com/mmicu/commonadapter/CommonRecyclerViewAdapterImpl.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@ import android.view.ViewGroup
66
import androidx.databinding.DataBindingUtil
77
import androidx.databinding.ViewDataBinding
88

9-
internal class CommonRecyclerViewAdapterImpl(
9+
class CommonRecyclerViewAdapterImpl private constructor(
1010
private val listCommonHolder: MutableList<CommonItemHolder<*>>
1111
) {
1212

13+
companion object {
14+
fun initialize(listCommonHolder: MutableList<CommonItemHolder<*>>): CommonRecyclerViewAdapterImpl {
15+
return CommonRecyclerViewAdapterImpl(listCommonHolder)
16+
}
17+
}
18+
1319
private lateinit var onItemClickListener: (pos: Int, data: Any?, view: View) -> Unit
1420

1521
fun setItemClickListener(onItemClickListener: (pos: Int, data: Any?, view: View) -> Unit) {
@@ -22,7 +28,7 @@ internal class CommonRecyclerViewAdapterImpl(
2228
val binding: ViewDataBinding = DataBindingUtil.inflate(
2329
layoutInflater, viewType, parent, false
2430
)
25-
return CommonViewHolderImpl(binding)
31+
return CommonViewHolderImpl.initialize(binding)
2632
}
2733

2834
fun getItemCount(): Int {

commonadapter/src/main/java/com/mmicu/commonadapter/CommonViewHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.mmicu.commonadapter
33
import androidx.databinding.ViewDataBinding
44
import androidx.recyclerview.widget.RecyclerView
55

6-
abstract class CommonViewHolder(private val binding: ViewDataBinding) :
6+
abstract class CommonViewHolder(binding: ViewDataBinding) :
77
RecyclerView.ViewHolder(binding.root) {
88

99
abstract fun bind(commonItemHolder: CommonItemHolder<*>)

commonadapter/src/main/java/com/mmicu/commonadapter/CommonViewHolderImpl.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,15 @@ import androidx.databinding.ViewDataBinding
55
/**
66
* A generic RecyclerView.ViewHolder for the [CommonRecyclerViewAdapterImpl]
77
*/
8-
internal class CommonViewHolderImpl(private val binding: ViewDataBinding) :
8+
class CommonViewHolderImpl private constructor(private val binding: ViewDataBinding) :
99
CommonViewHolder(binding) {
1010

11+
companion object {
12+
fun initialize(binding: ViewDataBinding): CommonViewHolderImpl {
13+
return CommonViewHolderImpl(binding)
14+
}
15+
}
16+
1117
/**
1218
* Binds the declared model [CommonItemHolder.data]
1319
* wrapped by [CommonItemHolder] to the layout

0 commit comments

Comments
 (0)