diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a555236..b7b09a4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,7 @@ + diff --git a/app/src/main/java/com/zy/demo/ApiActivity.kt b/app/src/main/java/com/zy/demo/ApiActivity.kt index b6b9a02..42503ce 100644 --- a/app/src/main/java/com/zy/demo/ApiActivity.kt +++ b/app/src/main/java/com/zy/demo/ApiActivity.kt @@ -33,8 +33,8 @@ class ApiActivity : BaseActivity() { multiState.show() } + val lottieOtherState = LottieOtherState() viewBinding.btnLottie2.setOnClickListener { - val lottieOtherState = LottieOtherState() lottieOtherState.retry = { Toast.makeText(this, "retry...", Toast.LENGTH_SHORT).show() } diff --git a/app/src/main/java/com/zy/demo/MainActivity.kt b/app/src/main/java/com/zy/demo/MainActivity.kt index 9bdbce2..62bce8c 100644 --- a/app/src/main/java/com/zy/demo/MainActivity.kt +++ b/app/src/main/java/com/zy/demo/MainActivity.kt @@ -44,5 +44,8 @@ class MainActivity : BaseActivity() { startActivity() } + viewBinding.smartRefreshLayout2.setOnClickListener { + startActivity() + } } } \ No newline at end of file diff --git a/app/src/main/java/com/zy/demo/MultiStateFragment.kt b/app/src/main/java/com/zy/demo/MultiStateFragment.kt index 1d7b493..a62b09b 100644 --- a/app/src/main/java/com/zy/demo/MultiStateFragment.kt +++ b/app/src/main/java/com/zy/demo/MultiStateFragment.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import com.zy.demo.base.BaseFragment import com.zy.demo.base.mockError -import com.zy.demo.base.mockSuccess import com.zy.demo.databinding.FragmentMultiStateBinding import com.zy.multistatepage.MultiStateContainer import com.zy.multistatepage.bindMultiState @@ -26,7 +25,6 @@ class MultiStateFragment : BaseFragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View { - inflater.inflate(R.layout.activity_api, container, false) val root = super.onCreateView(inflater, container, savedInstanceState) multiState = root!!.bindMultiState() multiState.show() diff --git a/app/src/main/java/com/zy/demo/MultiViewActivity.kt b/app/src/main/java/com/zy/demo/MultiViewActivity.kt index 3496e3a..de6502a 100644 --- a/app/src/main/java/com/zy/demo/MultiViewActivity.kt +++ b/app/src/main/java/com/zy/demo/MultiViewActivity.kt @@ -3,6 +3,7 @@ package com.zy.demo import com.zy.demo.base.BaseActivity import com.zy.demo.base.mockError import com.zy.demo.base.mockSuccess +import com.zy.demo.base.showLoading import com.zy.demo.databinding.ActivityMultiViewBinding import com.zy.multistatepage.bindMultiState diff --git a/app/src/main/java/com/zy/demo/RefreshStateActivity.kt b/app/src/main/java/com/zy/demo/RefreshStateActivity.kt index f5b86a6..52c868d 100644 --- a/app/src/main/java/com/zy/demo/RefreshStateActivity.kt +++ b/app/src/main/java/com/zy/demo/RefreshStateActivity.kt @@ -12,18 +12,18 @@ class RefreshStateActivity : BaseActivity() { private var count = 0 override fun initPage() { val multiStateActivityRoot = bindMultiState() + lifecycleScope.launchWhenCreated { multiStateActivityRoot.show() delay(2000) - val errorState = ErrorState().apply { - retry { - lifecycleScope.launchWhenCreated { - multiStateActivityRoot.show() - delay(2000) - multiStateActivityRoot.show(this@apply) { - it.setErrorMsg("鸡你太美 ${++count}") - it.setErrorIcon(R.mipmap.jntm) - } + val errorState = ErrorState() + errorState.retry { + lifecycleScope.launchWhenCreated { + multiStateActivityRoot.show() + delay(2000) + multiStateActivityRoot.show(errorState) { + it.setErrorMsg("鸡你太美 ${++count}") + it.setErrorIcon(R.mipmap.jntm) } } } diff --git a/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity.kt b/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity.kt index f58e717..b48756c 100644 --- a/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity.kt +++ b/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity.kt @@ -74,7 +74,7 @@ class SmartRefreshLayoutActivity : BaseActivity() { + class RlvAdapter : RecyclerView.Adapter() { var data = mutableListOf() diff --git a/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity2.kt b/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity2.kt new file mode 100644 index 0000000..869cf73 --- /dev/null +++ b/app/src/main/java/com/zy/demo/SmartRefreshLayoutActivity2.kt @@ -0,0 +1,74 @@ +package com.zy.demo + +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import com.zy.demo.base.* +import com.zy.demo.databinding.ActivitySmartRefreshLayout2Binding +import com.zy.demo.databinding.ActivitySmartRefreshLayoutBinding +import com.zy.multistatepage.bindMultiState +import kotlinx.coroutines.delay + +/** + * @ProjectName: MultiStatePage + * @Author: jojo + * @Email: 17635289240@163.com + * @CreateDate: 2021/8/2 5:48 下午 + * @Description: TODO + */ +class SmartRefreshLayoutActivity2 : BaseActivity() { + private val rlvAdapter = SmartRefreshLayoutActivity.RlvAdapter() + private val container by lazy { viewBinding.recyclerView.bindMultiState() } + + override fun initPage() { + viewBinding.recyclerView.layoutManager = LinearLayoutManager(this) + viewBinding.recyclerView.adapter = rlvAdapter + loadData() + + + viewBinding.smartRefreshLayout.setEnableLoadMoreWhenContentNotFull(false) + + viewBinding.smartRefreshLayout.setOnRefreshListener { + rlvAdapter.refreshData(getData(50)) + container.showSuccess() + it.finishRefresh() + } + viewBinding.smartRefreshLayout.setOnLoadMoreListener { + rlvAdapter.addData(getData(30)) + container.showSuccess() + it.finishLoadMore() + } + + viewBinding.btnContent.setOnClickListener { + rlvAdapter.refreshData(getData(50)) + container.showSuccess() + } + viewBinding.btnError.setOnClickListener { + rlvAdapter.clearData() + container.showError() { + it.retry { loadData() } + } + } + viewBinding.btnEmpty.setOnClickListener { + rlvAdapter.clearData() + container.showEmpty() + } + } + + private fun loadData() { + lifecycleScope.launchWhenResumed { + container.showLoading() + delay(3000) + rlvAdapter.refreshData(getData(50)) + container.showSuccess() + } + } + + private fun getData(count: Int): MutableList { + val data = mutableListOf() + for (i in 0 until count) { + data.add("data") + } + return data + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zy/demo/base/Fun.kt b/app/src/main/java/com/zy/demo/base/Fun.kt index 184136c..5d95838 100644 --- a/app/src/main/java/com/zy/demo/base/Fun.kt +++ b/app/src/main/java/com/zy/demo/base/Fun.kt @@ -89,4 +89,4 @@ fun MultiStateContainer.showLoading(callBack: () -> Unit = {}) { inline fun Activity.startActivity() { startActivity(Intent(this, T::class.java)) -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0445705..dd6d6be 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -68,6 +68,12 @@ android:layout_height="wrap_content" android:text="结合SmartRefreshLayout使用" /> +