{"id":1817,"date":"2023-01-16T11:16:09","date_gmt":"2023-01-16T03:16:09","guid":{"rendered":"https:\/\/badgameshow.com\/fly\/?p=1817"},"modified":"2023-01-16T11:23:35","modified_gmt":"2023-01-16T03:23:35","slug":"%e3%80%90android%e3%80%91viewpager2-%e5%b7%a6%e5%8f%b3%e6%bb%91%e5%8b%95-%e7%af%84%e4%be%8b","status":"publish","type":"post","link":"https:\/\/badgameshow.com\/fly\/%e3%80%90android%e3%80%91viewpager2-%e5%b7%a6%e5%8f%b3%e6%bb%91%e5%8b%95-%e7%af%84%e4%be%8b\/","title":{"rendered":"\u3010Android\u3011ViewPager2 \u5de6\u53f3\u6ed1\u52d5 \u7bc4\u4f8b"},"content":{"rendered":"<h1>\u3010Android\u3011ViewPager2 \u5de6\u53f3\u6ed1\u52d5 \u7bc4\u4f8b<\/h1>\n<h4>ViewPager2 \u662f Android \u4e2d\u7528\u65bc\u5728\u5c4f\u5e55\u4e0a\u6ed1\u52d5\u9801\u9762\u7684\u7d44\u4ef6\u3002\u5b83\u662f ViewPager \u7684\u66f4\u65b0\u7248\u672c\uff0c\u4e3b\u8981\u6539\u9032\u4e86\u6027\u80fd\u548c\u7a69\u5b9a\u6027\u3002<\/h4>\n<h4>ViewPager2 \u53ef\u4ee5\u7528\u65bc\u5be6\u73fe\u5e7b\u71c8\u7247\u6548\u679c\u3001\u9801\u9762\u5206\u9801\u7b49\u529f\u80fd\u3002\u5b83\u652f\u6301\u6a2a\u5411\u548c\u7e31\u5411\u6ed1\u52d5\uff0c\u4e26\u4e14\u652f\u6301\u4f7f\u7528RecyclerView\u4f5c\u70ba\u6578\u64da\u6e90\u3002<\/h4>\n<h4>\u4f7f\u7528 ViewPager2 \u9700\u8981\u4f7f\u7528 PagerAdapter \u4f5c\u70ba\u6578\u64da\u6e90\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u7d81\u5b9a\u6578\u64da\u8207\u9801\u9762\u7684\u95dc\u4fc2\u3002<\/h4>\n<hr \/>\n<h4>\u6587\u7ae0\u76ee\u9304<\/h4>\n<ol>\n<li><a href=\"#a\">ViewPager2 DiceFragment<\/a><\/li>\n<li><a href=\"#b\">ViewPager2 PokerFragment<\/a><\/li>\n<li><a href=\"#c\">ViewPager2<\/a><\/li>\n<li><a href=\"#d\">Developer Documents ViewPager2<\/a><\/li>\n<\/ol>\n<hr \/>\n<p><a id=\"a\"><\/a><\/p>\n<h4>1.ViewPager2 DiceFragment<\/h4>\n<h5>fragment_dice.xml<\/h5>\n<pre data-language=XML><code class=\"language-markup line-numbers\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;layout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"&gt;\n\n    &lt;data&gt;\n\n    &lt;\/data&gt;\n\n    &lt;androidx.appcompat.widget.LinearLayoutCompat\n        android:layout_width=\"match_parent\"\n        android:gravity=\"center\"\n        android:layout_height=\"match_parent\"&gt;\n\n        &lt;androidx.appcompat.widget.AppCompatImageView\n            android:src=\"@drawable\/dice\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\" \/&gt;\n\n    &lt;\/androidx.appcompat.widget.LinearLayoutCompat&gt;\n&lt;\/layout&gt;\n<\/code><\/pre>\n<h5>DiceFragment.kt<\/h5>\n<pre><code class=\"language-kotlin line-numbers\">class DiceFragment : Fragment(R.layout.fragment_dice)\n<\/code><\/pre>\n<p><a id=\"b\"><\/a><\/p>\n<h4>2.ViewPager2 PokerFragment<\/h4>\n<h5>fragment_poker.xml<\/h5>\n<pre data-language=XML><code class=\"language-markup line-numbers\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;layout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"&gt;\n\n    &lt;data&gt;\n\n    &lt;\/data&gt;\n\n    &lt;androidx.appcompat.widget.LinearLayoutCompat\n        android:layout_width=\"match_parent\"\n        android:gravity=\"center\"\n        android:layout_height=\"match_parent\"&gt;\n\n        &lt;androidx.appcompat.widget.AppCompatImageView\n            android:src=\"@drawable\/poker\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\" \/&gt;\n\n    &lt;\/androidx.appcompat.widget.LinearLayoutCompat&gt;\n&lt;\/layout&gt;\n<\/code><\/pre>\n<h5>PokerFragment.kt<\/h5>\n<pre><code class=\"language-kotlin line-numbers\">class PokerFragment : Fragment(R.layout.fragment_poker)\n<\/code><\/pre>\n<p><a id=\"c\"><\/a><\/p>\n<h4>3.ViewPager2<\/h4>\n<h5>PagingAdapter.kt<\/h5>\n<pre><code class=\"language-kotlin line-numbers\">class PagingAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :\n    FragmentStateAdapter(fragmentManager, lifecycle) {\n\n    var fragments = arrayListOf(DiceFragment(), PokerFragment())\n\n    override fun getItemCount() = fragments.size\n\n    override fun createFragment(position: Int) = fragments[position]\n\n}\n<\/code><\/pre>\n<h5>activity_main.xml<\/h5>\n<pre data-language=XML><code class=\"language-markup line-numbers\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&lt;!-- Use DrawerLayout as root container for activity --&gt;\n&lt;layout xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"\n    xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"&gt;\n\n    &lt;data&gt;\n\n    &lt;\/data&gt;\n\n    &lt;androidx.constraintlayout.widget.ConstraintLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"&gt;\n\n        &lt;androidx.viewpager2.widget.ViewPager2\n            android:id=\"@+id\/pager\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            app:layout_constraintBottom_toBottomOf=\"parent\"\n            app:layout_constraintEnd_toEndOf=\"parent\"\n            app:layout_constraintStart_toStartOf=\"parent\"\n            app:layout_constraintTop_toTopOf=\"parent\" \/&gt;\n\n    &lt;\/androidx.constraintlayout.widget.ConstraintLayout&gt;\n\n&lt;\/layout&gt;\n<\/code><\/pre>\n<h5>MainActivity.kt<\/h5>\n<pre><code class=\"language-kotlin line-numbers\">class MainActivity : AppCompatActivity() {\n\n    private lateinit var binding: ActivityMainBinding\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        binding = ActivityMainBinding.inflate(layoutInflater)\n        binding.pager.adapter = PagingAdapter(supportFragmentManager, lifecycle)\n        setContentView(binding.root)\n    }\n\n}\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/badgameshow.com\/fly\/wp-content\/uploads\/2023\/01\/ezgif-5-999b77417f.gif\" width=\"30%\"\/><\/p>\n<p><a id=\"d\"><\/a><\/p>\n<h4>4.Developer Documents ViewPager2<\/h4>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/developer.android.com\/guide\/navigation\/navigation-swipe-view-2\" title=\"Open in Documents ViewPager2\" target=\"_blank\" rel=\"noopener\">Open in Documents ViewPager2<\/a><\/p>\n\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>\u3010Android\u3011ViewPager2 \u5de6\u53f3\u6ed1\u52d5 \u7bc4\u4f8b ViewPager2 \u662f Android \u4e2d\u7528\u65bc\u5728\u5c4f\u5e55 &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[5],"tags":[13,15,231],"class_list":["post-1817","post","type-post","status-publish","format-standard","hentry","category-android","tag-android","tag-kotlin","tag-viewpager2"],"_links":{"self":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/1817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/comments?post=1817"}],"version-history":[{"count":2,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/1817\/revisions"}],"predecessor-version":[{"id":1820,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/1817\/revisions\/1820"}],"wp:attachment":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/media?parent=1817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/categories?post=1817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/tags?post=1817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}