美文网首页Kotlin
Kotlin学习笔记——Fragment

Kotlin学习笔记——Fragment

作者: Jingtianer | 来源:发表于2019-04-12 16:04 被阅读0次
        #define 小毛驴 xml
    

    使用方法

    Fragment与ViewPager搭配,实现翻页,实现每页多个控件

    1. 写好每个item的小毛驴文件和数据传送类
    2. 继承Fragment类,自定义一个fragment
    class BlankFragment : Fragment() {
        var ctx:Context? = null
        var mPosition:Int = 0
        var mInageId:Int = 0
        var mDesc:String = ""
        var title:String = ""
    
        val colorNames = listOf<String>("红色","黄色","绿色","青色","蓝色")
        val colors = intArrayOf(Color.RED, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE)
        var mSeq:Int = 0
        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
            ctx = activity
            if (arguments != null) {
                mPosition = arguments!!.getInt("position", 0)
                mInageId = arguments!!.getInt("image_id", 0)
                mDesc = arguments!!.getString("desc")
                title = arguments!!.getString("title")
            }//获取数据
            val view = inflater.inflate(R.layout.show_info, container, false)
    
            view.findViewById<ImageView>(R.id.imageView).setImageResource(mInageId)
            view.findViewById<TextView>(R.id.textView).text = mDesc
            //显示数据
            return view
        }
    
        companion object {
            fun newInstance(position:Int, image_id:Int, desc:String, title:String) : BlankFragment {//调用这个函数,创建新的fragment
    
                val fragment = BlankFragment()
                val bundle = Bundle()
                bundle.putInt("position", position)
                bundle.putInt("image_id", image_id)
                bundle.putString("desc", desc)
                bundle.putString("title", title)
                fragment.arguments = bundle
                return fragment
            }
        }
    }
    
    1. ViewPager的适配器
    class infoPagerAdapter(val fragManger: FragmentManager, val itemList:MutableList<itemInfo>) : FragmentStatePagerAdapter(fragManger) {
        override fun getCount(): Int = itemList.size
        override fun getItem(p0: Int): Fragment {
            val item = itemList[p0]
            return BlankFragment.newInstance(p0, item.pic, item.desc, item.name)
        }
    
        override fun getPageTitle(position: Int): CharSequence? {
            return itemList[position].name
        }
    }
    

    4.给ViewPager添加适配器

    class MainActivity : FragmentActivity(){
    //这个时候,继承的是FragmentActivity
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            var vp:ViewPager = findViewById(R.id.vp)
            var title: PagerTabStrip = findViewById(R.id.title)
            val list:MutableList<itemInfo> = mutableListOf()
            //省略中间给list赋值的过程
            vp.adapter = infoPagerAdapter(supportFragmentManager, list)
            vp.currentItem = 0
        }
    }
    

    相关文章

      网友评论

        本文标题:Kotlin学习笔记——Fragment

        本文链接:https://www.haomeiwen.com/subject/cogcwqtx.html