diff --git a/app/build.gradle b/app/build.gradle index 27ef2da..d676582 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,7 +29,9 @@ dependencies { implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + implementation 'com.google.android.material:material:1.1.0-alpha07' + implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.45-androidx' implementation project(path: ':library') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 98678d8..3becad3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ + android:theme="@style/AppTheme" + tools:ignore="GoogleAppIndexingWarning"> @@ -17,6 +19,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/luyao/util/ktx/MainActivity.kt b/app/src/main/java/luyao/util/ktx/MainActivity.kt index 8d5d6be..c21ba7f 100644 --- a/app/src/main/java/luyao/util/ktx/MainActivity.kt +++ b/app/src/main/java/luyao/util/ktx/MainActivity.kt @@ -2,8 +2,9 @@ package luyao.util.ktx import kotlinx.android.synthetic.main.activity_main.* import luyao.ktx.R -import luyao.ktx.base.BaseActivity +import luyao.util.ktx.base.BaseActivity import luyao.util.ktx.mvvm.MvvmActivity +import luyao.util.ktx.ui.ExtActivity class MainActivity : BaseActivity() { @@ -13,5 +14,6 @@ class MainActivity : BaseActivity() { override fun initData() { btMvvm.setOnClickListener { startActivity(MvvmActivity::class.java) } + btExt.setOnClickListener { startActivity(ExtActivity::class.java) } } } diff --git a/app/src/main/java/luyao/util/ktx/adapter/CommonAdapter.kt b/app/src/main/java/luyao/util/ktx/adapter/CommonAdapter.kt new file mode 100644 index 0000000..ed815a8 --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/adapter/CommonAdapter.kt @@ -0,0 +1,16 @@ +package luyao.util.ktx.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import luyao.ktx.R + +/** + * Created by luyao + * on 2019/6/10 10:57 + */ +class CommonAdapter(layoutResId: Int = R.layout.item_common) : BaseQuickAdapter(layoutResId) { + + override fun convert(helper: BaseViewHolder, item: String) { + helper.setText(R.id.itemTv, item) + } +} \ No newline at end of file diff --git a/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt b/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt index a0b5f1b..f1c673a 100644 --- a/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt +++ b/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt @@ -4,8 +4,8 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.Observer import kotlinx.android.synthetic.main.activity_mvvm_demo.* import luyao.ktx.R -import luyao.ktx.base.BaseVMActivity -import luyao.ktx.ext.toast +import luyao.util.ktx.base.BaseVMActivity +import luyao.util.ktx.ext.toast /** * Created by luyao diff --git a/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt b/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt index 6145d1a..57972d0 100644 --- a/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt +++ b/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt @@ -1,12 +1,10 @@ package luyao.util.ktx.mvvm -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.MutableLiveData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.delay -import luyao.ktx.base.BaseViewModel +import luyao.util.ktx.base.BaseViewModel /** * Created by luyao diff --git a/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt b/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt new file mode 100644 index 0000000..cf4115f --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt @@ -0,0 +1,53 @@ +package luyao.util.ktx.ui + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentPagerAdapter +import kotlinx.android.synthetic.main.activity_ext.* +import luyao.ktx.R +import luyao.util.ktx.base.BaseActivity +import luyao.util.ktx.ui.fragment.ContextExtFragment + +/** + * Created by luyao + * on 2019/6/10 10:00 + */ +class ExtActivity : BaseActivity() { + + private val titleList = arrayOf("Context", "String") + private val fragmentList = arrayListOf() + + private val contextExtFragment = ContextExtFragment() + private val stringExtFragment = ContextExtFragment() + + + override fun getLayoutResId() = R.layout.activity_ext + + init { + fragmentList.add(contextExtFragment) + fragmentList.add(stringExtFragment) + } + + override fun initView() { + mToolbar.run { + title = "扩展函数" + setNavigationIcon(R.drawable.arrow_back) + } + + initViewPager() + } + + override fun initData() { + } + + private fun initViewPager() { + extViewPager.adapter = + object : FragmentPagerAdapter(supportFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { + override fun getItem(position: Int) = fragmentList[position] + + override fun getCount() = fragmentList.size + + override fun getPageTitle(position: Int) = titleList[position] + } + extTabLayout.setupWithViewPager(extViewPager) + } +} \ No newline at end of file diff --git a/app/src/main/java/luyao/util/ktx/ui/fragment/CommonFragment.kt b/app/src/main/java/luyao/util/ktx/ui/fragment/CommonFragment.kt new file mode 100644 index 0000000..e68fa53 --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/ui/fragment/CommonFragment.kt @@ -0,0 +1,37 @@ +package luyao.util.ktx.ui.fragment + +import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.fragment_context_ext.* +import luyao.ktx.R +import luyao.util.ktx.adapter.CommonAdapter +import luyao.util.ktx.base.BaseFragment + +/** + * Created by luyao + * on 2019/6/10 13:18 + */ +abstract class CommonFragment : BaseFragment() { + + open val dataList = ArrayList() + private val commonAdapter by lazy { CommonAdapter() } + + override fun getLayoutResId() = R.layout.fragment_context_ext + + override fun initView() { + commonAdapter.setOnItemClickListener { _, _, position -> + handleClick(position) + } + recycleView.run { + layoutManager = LinearLayoutManager(context) + adapter = commonAdapter + } + } + + override fun initData() { + fillList() + commonAdapter.setNewData(dataList) + } + + abstract fun fillList() + abstract fun handleClick(position: Int) +} \ No newline at end of file diff --git a/app/src/main/java/luyao/util/ktx/ui/fragment/ContextExtFragment.kt b/app/src/main/java/luyao/util/ktx/ui/fragment/ContextExtFragment.kt new file mode 100644 index 0000000..7183dc3 --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/ui/fragment/ContextExtFragment.kt @@ -0,0 +1,25 @@ +package luyao.util.ktx.ui.fragment + +import luyao.util.ktx.ext.getVersionName +import luyao.util.ktx.ext.toast + +/** + * Created by luyao + * on 2019/6/10 10:46 + */ +class ContextExtFragment : CommonFragment() { + + override fun fillList() { + dataList.add("toast") + dataList.add("getVersionName") + } + + override fun handleClick(position: Int) { + context?.run { + when (position) { + 0 -> toast("I'am a short toast!") + 1 -> toast(getVersionName()) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/arrow_back.xml b/app/src/main/res/drawable/arrow_back.xml new file mode 100644 index 0000000..5a52737 --- /dev/null +++ b/app/src/main/res/drawable/arrow_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_ext.xml b/app/src/main/res/layout/activity_ext.xml new file mode 100644 index 0000000..bdda80b --- /dev/null +++ b/app/src/main/res/layout/activity_ext.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cb3836b..2b4a04d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" tools:context="luyao.util.ktx.MainActivity" android:orientation="vertical" - android:gravity="center_horizontal"> + android:gravity="center">