diff --git a/app/build.gradle b/app/build.gradle index 6c8b273..a7ea666 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,11 +17,10 @@ android { } dependencies { - compile "com.android.support:appcompat-v7:$versions.support" - compile "com.android.support:cardview-v7:$versions.support" - compile "com.android.support:design:$versions.support" - compile "com.android.support:recyclerview-v7:$versions.support" - compile "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin" - kapt "com.android.databinding:compiler:$versions.gradlePlugin" - compile project(":lastadapter") + implementation "androidx.appcompat:appcompat:$versions.support" + implementation "androidx.cardview:cardview:$versions.support" + implementation "com.google.android.material:material:$versions.support" + implementation "androidx.recyclerview:recyclerview:$versions.support" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin" + implementation project(":lastadapter") } diff --git a/app/src/main/java/com/github/nitrico/lastadapter_sample/data/Data.kt b/app/src/main/java/com/github/nitrico/lastadapter_sample/data/Data.kt index d220a44..6f1d7bb 100644 --- a/app/src/main/java/com/github/nitrico/lastadapter_sample/data/Data.kt +++ b/app/src/main/java/com/github/nitrico/lastadapter_sample/data/Data.kt @@ -1,6 +1,6 @@ package com.github.nitrico.lastadapter_sample.data -import android.databinding.ObservableArrayList +import androidx.databinding.ObservableArrayList object Data { diff --git a/app/src/main/java/com/github/nitrico/lastadapter_sample/data/StableData.kt b/app/src/main/java/com/github/nitrico/lastadapter_sample/data/StableData.kt index b72628c..1cf3dae 100644 --- a/app/src/main/java/com/github/nitrico/lastadapter_sample/data/StableData.kt +++ b/app/src/main/java/com/github/nitrico/lastadapter_sample/data/StableData.kt @@ -1,6 +1,6 @@ package com.github.nitrico.lastadapter_sample.data -import android.databinding.ObservableArrayList +import androidx.databinding.ObservableArrayList object StableData { diff --git a/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/ListFragment.kt b/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/ListFragment.kt index d521519..9806fa2 100644 --- a/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/ListFragment.kt +++ b/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/ListFragment.kt @@ -1,12 +1,12 @@ package com.github.nitrico.lastadapter_sample.ui import android.os.Bundle -import android.support.v4.app.Fragment -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.github.nitrico.lastadapter_sample.R open class ListFragment : Fragment() { diff --git a/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/MainActivity.kt b/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/MainActivity.kt index 4c74fe0..d2482ed 100644 --- a/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/MainActivity.kt +++ b/app/src/main/java/com/github/nitrico/lastadapter_sample/ui/MainActivity.kt @@ -1,11 +1,12 @@ package com.github.nitrico.lastadapter_sample.ui -import android.support.v7.app.AppCompatActivity import android.os.Bundle -import android.support.v4.app.FragmentManager -import android.support.v4.app.FragmentPagerAdapter import android.view.Menu import android.view.MenuItem +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter +import androidx.viewpager.widget.ViewPager import com.github.nitrico.lastadapter_sample.data.Data import com.github.nitrico.lastadapter_sample.R import com.github.nitrico.lastadapter_sample.data.Header @@ -23,6 +24,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) + val v: ViewPager pager.adapter = ViewPagerAdapter(supportFragmentManager) tabs.setupWithViewPager(pager) } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 45d04ce..caa8d95 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,26 +4,26 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - + - diff --git a/app/src/main/res/layout/fragment_list.xml b/app/src/main/res/layout/fragment_list.xml index a15cbff..999accc 100644 --- a/app/src/main/res/layout/fragment_list.xml +++ b/app/src/main/res/layout/fragment_list.xml @@ -1,4 +1,4 @@ -(val binding: B) : RecyclerView.ViewHolder(binding.root) { internal var created = false diff --git a/lastadapter/src/main/java/com/github/nitrico/lastadapter/LastAdapter.kt b/lastadapter/src/main/java/com/github/nitrico/lastadapter/LastAdapter.kt index e6cc38e..e2be24c 100644 --- a/lastadapter/src/main/java/com/github/nitrico/lastadapter/LastAdapter.kt +++ b/lastadapter/src/main/java/com/github/nitrico/lastadapter/LastAdapter.kt @@ -16,13 +16,13 @@ package com.github.nitrico.lastadapter -import android.databinding.DataBindingUtil -import android.databinding.ObservableList -import android.databinding.OnRebindCallback -import android.databinding.ViewDataBinding -import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.databinding.ObservableList +import androidx.databinding.OnRebindCallback +import androidx.databinding.ViewDataBinding +import androidx.recyclerview.widget.RecyclerView class LastAdapter(private val list: List, private val variable: Int? = null, @@ -46,22 +46,17 @@ class LastAdapter(private val list: List, } @JvmOverloads - fun map(clazz: Class, layout: Int, variable: Int? = null) - = apply { map[clazz] = BaseType(layout, variable) } + fun map(clazz: Class, layout: Int, variable: Int? = null) = apply { map[clazz] = BaseType(layout, variable) } - inline fun map(layout: Int, variable: Int? = null) - = map(T::class.java, layout, variable) + inline fun map(layout: Int, variable: Int? = null) = map(T::class.java, layout, variable) - fun map(clazz: Class, type: AbsType<*>) - = apply { map[clazz] = type } + fun map(clazz: Class, type: AbsType<*>) = apply { map[clazz] = type } - inline fun map(type: AbsType<*>) - = map(T::class.java, type) + inline fun map(type: AbsType<*>) = map(T::class.java, type) inline fun map(layout: Int, variable: Int? = null, - noinline f: (Type.() -> Unit)? = null) - = map(T::class.java, Type(layout, variable).apply { f?.invoke(this) }) + noinline f: (Type.() -> Unit)? = null) = map(T::class.java, Type(layout, variable).apply { f?.invoke(this) }) fun handler(handler: Handler) = apply { when (handler) { @@ -71,7 +66,7 @@ class LastAdapter(private val list: List, } layoutHandler = handler } - is TypeHandler -> typeHandler = handler + is TypeHandler -> typeHandler = handler } } @@ -86,9 +81,8 @@ class LastAdapter(private val list: List, fun into(recyclerView: RecyclerView) = apply { recyclerView.adapter = this } - override fun onCreateViewHolder(view: ViewGroup, viewType: Int): Holder { - val binding = DataBindingUtil.inflate(inflater, viewType, view, false) + val binding = DataBindingUtil.inflate(inflater!!, viewType, view, false) val holder = Holder(binding) binding.addOnRebindCallback(object : OnRebindCallback() { override fun onPreBind(binding: ViewDataBinding) = recyclerView?.isComputingLayout ?: false @@ -167,18 +161,15 @@ class LastAdapter(private val list: List, recyclerView = null } - override fun getItemViewType(position: Int) - = layoutHandler?.getItemLayout(list[position], position) + override fun getItemViewType(position: Int) = layoutHandler?.getItemLayout(list[position], position) ?: typeHandler?.getItemType(list[position], position)?.layout ?: getType(position)?.layout ?: throw RuntimeException("Invalid object at position $position: ${list[position].javaClass}") - private fun getType(position: Int) - = typeHandler?.getItemType(list[position], position) + private fun getType(position: Int) = typeHandler?.getItemType(list[position], position) ?: map[list[position].javaClass] - private fun getVariable(type: BaseType) - = type.variable + private fun getVariable(type: BaseType) = type.variable ?: variable ?: throw IllegalStateException("No variable specified for type ${type.javaClass.simpleName}") @@ -196,7 +187,7 @@ class LastAdapter(private val list: List, private fun notifyCreate(holder: Holder, type: AbsType) { when (type) { - is Type -> { + is Type -> { setClickListeners(holder, type) type.onCreate?.invoke(holder) } @@ -207,14 +198,14 @@ class LastAdapter(private val list: List, private fun notifyBind(holder: Holder, type: AbsType) { when (type) { - is Type -> type.onBind?.invoke(holder) + is Type -> type.onBind?.invoke(holder) is ItemType -> type.onBind(holder) } } private fun notifyRecycle(holder: Holder, type: AbsType) { when (type) { - is Type -> type.onRecycle?.invoke(holder) + is Type -> type.onRecycle?.invoke(holder) is ItemType -> type.onRecycle(holder) } } diff --git a/lastadapter/src/main/java/com/github/nitrico/lastadapter/ObservableListCallback.kt b/lastadapter/src/main/java/com/github/nitrico/lastadapter/ObservableListCallback.kt index aceba3d..1ab5318 100644 --- a/lastadapter/src/main/java/com/github/nitrico/lastadapter/ObservableListCallback.kt +++ b/lastadapter/src/main/java/com/github/nitrico/lastadapter/ObservableListCallback.kt @@ -16,9 +16,9 @@ package com.github.nitrico.lastadapter -import android.databinding.ObservableList import android.os.Looper -import android.support.v7.widget.RecyclerView +import androidx.databinding.ObservableList +import androidx.recyclerview.widget.RecyclerView import java.lang.ref.WeakReference class ObservableListCallback(adapter: RecyclerView.Adapter) @@ -48,7 +48,7 @@ class ObservableListCallback(adapter: RecyclerView. } override fun onItemRangeMoved(list: ObservableList, from: Int, to: Int, count: Int) { - adapter?.let { for (i in 0..count-1) it.notifyItemMoved(from+i, to+i) } + adapter?.let { for (i in 0..count - 1) it.notifyItemMoved(from + i, to + i) } } } diff --git a/lastadapter/src/main/java/com/github/nitrico/lastadapter/Types.kt b/lastadapter/src/main/java/com/github/nitrico/lastadapter/Types.kt index 36319f7..450ad79 100644 --- a/lastadapter/src/main/java/com/github/nitrico/lastadapter/Types.kt +++ b/lastadapter/src/main/java/com/github/nitrico/lastadapter/Types.kt @@ -16,7 +16,8 @@ package com.github.nitrico.lastadapter -import android.databinding.ViewDataBinding +import androidx.databinding.ViewDataBinding + open class BaseType @JvmOverloads constructor(open val layout: Int, open val variable: Int? = null) @@ -27,9 +28,9 @@ abstract class AbsType open class ItemType @JvmOverloads constructor(layout: Int, variable: Int? = null) : AbsType(layout, variable) { - open fun onCreate(holder: Holder) { } - open fun onBind(holder: Holder) { } - open fun onRecycle(holder: Holder) { } + open fun onCreate(holder: Holder) {} + open fun onBind(holder: Holder) {} + open fun onRecycle(holder: Holder) {} } open class Type