diff --git a/README.md b/README.md
index 8e6b8c0..14175b1 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,9 @@
+# Deprecated (Temp)
+
+I think I am not maintaining version 1.x.x anymore, and if I have time and interested in the future, I might re-write it using Compose.
+
+With that said, I do think v1.4.1 is stable enough to use with ViewPager (Not ViewPager2). In case it is having issue with new versions of Kotlin / Android libraries, I wish you can folk it and use it with simple fixes. Thank you!
+
# LoopingViewPager
A ViewPager and a PagerAdapter that can:
diff --git a/app/build.gradle b/app/build.gradle
index b2d02c2..b35d27a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -23,6 +23,7 @@ android {
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation "androidx.recyclerview:recyclerview:1.2.0"
implementation project(':loopingviewpager')
// implementation 'com.asksira.android:loopingviewpager:1.4.1'
implementation "androidx.core:core-ktx:1.3.2"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a48855f..cd6319e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,6 +18,7 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/asksira/loopingviewpagerdemo/DemoInfiniteAdapter.kt b/app/src/main/java/com/asksira/loopingviewpagerdemo/DemoInfiniteAdapter.kt
index ec2d629..4992a7f 100644
--- a/app/src/main/java/com/asksira/loopingviewpagerdemo/DemoInfiniteAdapter.kt
+++ b/app/src/main/java/com/asksira/loopingviewpagerdemo/DemoInfiniteAdapter.kt
@@ -24,7 +24,7 @@ class DemoInfiniteAdapter(
return if (viewType == VIEW_TYPE_SPECIAL) LayoutInflater.from(
container.context
).inflate(R.layout.item_special, container, false) else LayoutInflater.from(container.context)
- .inflate(R.layout.item_pager, container, false)
+ .inflate(R.layout.item_page, container, false)
}
override fun bindView(
diff --git a/app/src/main/java/com/asksira/loopingviewpagerdemo/Extensions.kt b/app/src/main/java/com/asksira/loopingviewpagerdemo/Extensions.kt
index 54b4266..7adbb92 100644
--- a/app/src/main/java/com/asksira/loopingviewpagerdemo/Extensions.kt
+++ b/app/src/main/java/com/asksira/loopingviewpagerdemo/Extensions.kt
@@ -3,6 +3,9 @@ package com.asksira.loopingviewpagerdemo
import android.content.Context
import android.content.res.Resources
import android.util.TypedValue
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import androidx.core.content.ContextCompat
fun Int.dp(): Int {
@@ -11,4 +14,8 @@ fun Int.dp(): Int {
fun Context.getColorCompat(colorRes: Int): Int {
return ContextCompat.getColor(this, colorRes)
+}
+
+fun View.inflate(resId: Int, container: ViewGroup, attach: Boolean): View {
+ return LayoutInflater.from(this.context).inflate(resId, container, attach)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/asksira/loopingviewpagerdemo/FakeDataSource.kt b/app/src/main/java/com/asksira/loopingviewpagerdemo/FakeDataSource.kt
new file mode 100644
index 0000000..a68b731
--- /dev/null
+++ b/app/src/main/java/com/asksira/loopingviewpagerdemo/FakeDataSource.kt
@@ -0,0 +1,28 @@
+package com.asksira.loopingviewpagerdemo
+
+import java.util.ArrayList
+
+fun createDummyItems(): ArrayList {
+ val items = ArrayList()
+ items.add(0, 1)
+ items.add(1, 2)
+ items.add(2, 3)
+ items.add(3, 4)
+ items.add(4, 5)
+ items.add(5, 6)
+ items.add(6, 0)
+ return items
+}
+
+fun createSecondDummyItems(): ArrayList {
+ val items = ArrayList()
+ items.add(0, 1)
+ items.add(1, 2)
+ return items
+}
+
+fun createThirdDummyItems(): ArrayList {
+ val items = ArrayList()
+ items.add(0, 1)
+ return items
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/asksira/loopingviewpagerdemo/ListActivity.kt b/app/src/main/java/com/asksira/loopingviewpagerdemo/ListActivity.kt
new file mode 100644
index 0000000..1e69408
--- /dev/null
+++ b/app/src/main/java/com/asksira/loopingviewpagerdemo/ListActivity.kt
@@ -0,0 +1,17 @@
+package com.asksira.loopingviewpagerdemo
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.recyclerview.widget.RecyclerView
+
+class ListActivity: AppCompatActivity() {
+
+ private lateinit var rv: RecyclerView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_recycler)
+ rv = findViewById(R.id.rv)
+ rv.adapter = ListAdapter()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/asksira/loopingviewpagerdemo/ListAdapter.kt b/app/src/main/java/com/asksira/loopingviewpagerdemo/ListAdapter.kt
new file mode 100644
index 0000000..268625c
--- /dev/null
+++ b/app/src/main/java/com/asksira/loopingviewpagerdemo/ListAdapter.kt
@@ -0,0 +1,78 @@
+package com.asksira.loopingviewpagerdemo
+
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.asksira.loopingviewpager.LoopingViewPager
+import java.lang.IllegalArgumentException
+
+class ListAdapter: RecyclerView.Adapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+ return when (viewType) {
+ 0 -> PagerViewHolder(parent.inflate(R.layout.item_pager, parent, false))
+ 1 -> DummyViewHolder(parent.inflate(R.layout.item_dummy, parent, false))
+ else -> throw IllegalArgumentException()
+ }
+ }
+
+ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+ when (holder) {
+ is PagerViewHolder -> holder.onBind()
+ is DummyViewHolder -> holder.onBind(position)
+ }
+ }
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ 0
+ } else {
+ 1
+ }
+ }
+
+ override fun getItemCount(): Int {
+ return 100
+ }
+
+ override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder) {
+ when (holder) {
+ is PagerViewHolder -> holder.onAttach()
+ }
+ }
+
+ override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) {
+ when (holder) {
+ is PagerViewHolder -> holder.onDetach()
+ }
+ }
+
+ inner class PagerViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
+
+ private val pager: LoopingViewPager = itemView.findViewById(R.id.viewpager)
+ private var adapter: DemoInfiniteAdapter? = null
+
+ fun onBind() {
+ adapter = DemoInfiniteAdapter(createDummyItems(), true)
+ pager.adapter = adapter
+ }
+
+ fun onAttach() {
+ pager.resumeAutoScroll()
+ }
+
+ fun onDetach() {
+ pager.pauseAutoScroll()
+ }
+
+ }
+
+ inner class DummyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
+
+ fun onBind(position: Int) {
+ itemView.findViewById(R.id.tvDummy).text = position.toString()
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/asksira/loopingviewpagerdemo/MainActivity.kt b/app/src/main/java/com/asksira/loopingviewpagerdemo/MainActivity.kt
index 3a6bc8d..ca0e0d8 100644
--- a/app/src/main/java/com/asksira/loopingviewpagerdemo/MainActivity.kt
+++ b/app/src/main/java/com/asksira/loopingviewpagerdemo/MainActivity.kt
@@ -1,5 +1,6 @@
package com.asksira.loopingviewpagerdemo
+import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Button
@@ -23,6 +24,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var page4: Button
private lateinit var page5: Button
private lateinit var page6: Button
+ private lateinit var btnGoListActivity: Button
private var currentDataSet = 1
override fun onCreate(savedInstanceState: Bundle?) {
@@ -31,7 +33,11 @@ class MainActivity : AppCompatActivity() {
viewPager = findViewById(R.id.viewpager)
indicatorView = findViewById(R.id.indicator)
changeDataSetButton = findViewById(R.id.change_dataset)
+ btnGoListActivity = findViewById(R.id.btnListActivity)
changeDataSetButton.setOnClickListener(View.OnClickListener { changeDataset() })
+ btnGoListActivity.setOnClickListener {
+ startActivity(Intent(this, ListActivity::class.java))
+ }
changePageLabel = findViewById(R.id.change_page_label)
page1 = findViewById(R.id.page1)
page2 = findViewById(R.id.page2)
@@ -83,31 +89,6 @@ class MainActivity : AppCompatActivity() {
super.onPause()
}
- private fun createDummyItems(): ArrayList {
- val items = ArrayList()
- items.add(0, 1)
- items.add(1, 2)
- items.add(2, 3)
- items.add(3, 4)
- items.add(4, 5)
- items.add(5, 6)
- items.add(6, 0)
- return items
- }
-
- private fun createSecondDummyItems(): ArrayList {
- val items = ArrayList()
- items.add(0, 1)
- items.add(1, 2)
- return items
- }
-
- private fun createThirdDummyItems(): ArrayList {
- val items = ArrayList()
- items.add(0, 1)
- return items
- }
-
private fun changeDataset() {
if (currentDataSet == 1) {
adapter?.itemList = createSecondDummyItems().toList()
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index fa20a17..8136dc4 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -101,4 +101,14 @@
app:layout_constraintTop_toTopOf="@id/page5"
app:layout_constraintLeft_toRightOf="@id/page5"/>
+
+
diff --git a/app/src/main/res/layout/activity_recycler.xml b/app/src/main/res/layout/activity_recycler.xml
new file mode 100644
index 0000000..f15b684
--- /dev/null
+++ b/app/src/main/res/layout/activity_recycler.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_dummy.xml b/app/src/main/res/layout/item_dummy.xml
new file mode 100644
index 0000000..ee6c368
--- /dev/null
+++ b/app/src/main/res/layout/item_dummy.xml
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_page.xml b/app/src/main/res/layout/item_page.xml
new file mode 100644
index 0000000..e146db7
--- /dev/null
+++ b/app/src/main/res/layout/item_page.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_pager.xml b/app/src/main/res/layout/item_pager.xml
index e146db7..84fb3dc 100644
--- a/app/src/main/res/layout/item_pager.xml
+++ b/app/src/main/res/layout/item_pager.xml
@@ -2,31 +2,21 @@
+ xmlns:app="http://schemas.android.com/apk/res-auto">
-
-
-
+ app:layout_constraintRight_toRightOf="parent"
+ app:isInfinite="true"
+ app:autoScroll="true"
+ android:clipToPadding="false"
+ android:paddingStart="24dp"
+ android:paddingEnd="24dp"
+ app:layout_constraintDimensionRatio="1.78"
+ app:scrollInterval="3000"/>
\ No newline at end of file