下面是一个简单的示例,展示了如何使用MVVM和ViewPager在Android应用中实现页面切换。
首先,在build.gradle文件中添加以下依赖项:
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
接下来,创建一个MainActivity类,作为应用的主要入口点。
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import com.example.viewpagerdemo.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var viewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
binding.viewModel = viewModel
val pagerAdapter = PagerAdapter(this)
binding.viewPager.adapter = pagerAdapter
}
}
然后,创建一个MainViewModel类,用于管理数据和业务逻辑。
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MainViewModel : ViewModel() {
val currentPage = MutableLiveData()
init {
currentPage.value = 0
}
fun onPageSelected(position: Int) {
currentPage.value = position
}
}
接下来,创建一个PagerAdapter类,用于管理ViewPager中的页面。
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.example.viewpagerdemo.FirstFragment
import com.example.viewpagerdemo.SecondFragment
import com.example.viewpagerdemo.ThirdFragment
class PagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
override fun getItemCount(): Int {
return 3
}
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> FirstFragment()
1 -> SecondFragment()
2 -> ThirdFragment()
else -> throw IllegalArgumentException("Invalid position: $position")
}
}
}
最后,创建三个Fragment类,作为ViewPager中的页面。
import androidx.fragment.app.Fragment
import com.example.viewpagerdemo.R
class FirstFragment : Fragment(R.layout.fragment_first)
class SecondFragment : Fragment(R.layout.fragment_second)
class ThirdFragment : Fragment(R.layout.fragment_third)
以上示例演示了如何使用MVVM和ViewPager在Android应用中实现页面切换。请根据实际需求进行修改和扩展。