kotlin实现viewpager滑动,对比Java更容易上手

      开始学习kotlin,在看的时候感觉挺简洁的,设置属性什么的都能一步到位,但是,当自己自己上手写的时候还是有些难度,关于kotlin介绍什么的一大堆就不细说了,有兴趣大家可以看看kotlin介绍,里面还有kotlin中文文档。

     首先,关于创建类和继承,在写Activity的时候少不了要继承AppCompatActivity,首先先来看看Java和kotlin继承的不同:

    java

public class MainActivity extends AppCompatActivity{}

    kotlin

class MainActivity : AppCompatActivity(){}

    在我们熟悉的Java中,继承的时候通过关键字extends来实现继承关系,在kotlin中通过“:”来实现,同时提醒大家,在kotlin中“:”的使用非常的频繁,同时也非常的重要

    在写Viewpager的时候需要实例化Adapter 和Viewpager的实例,并进行使用

Java:

    private ViewPager mViewPager;  
    private PagerAdapter adapter;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.bactivity);  
        initView();  
    }  
  
    private void initView() {  
        mViewPager= (ViewPager) findViewById(R.id.vp_container);  
        adapter=new PagerAdapter(getSupportFragmentManager());  
        mViewPager.setAdapter(adapter);  
    }  

kotlin:

    lateinit var pager:ViewPager
    lateinit var adapter:PagerAdapter
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.bactivity)
        initView()
    }

    fun initView(){
        pager = findViewById(R.id.b_viewpager)
        adapter = PagerAdapter(supportFragmentManager)
        pager.adapter = adapter
    }

在kotlin中 

lateinit var pager:ViewPager  —> private ViewPager pager;

其中 var 表示可修改,变量

pager:ViewPager 表示,ViewPager类型 名字叫pager

adapter = PagerAdapter(supportFragmentManager)  —> adapter = new PagerAdapter(getsupportFragmentManager());

在kotlin中,不需要new关键字,可以直接实例

pager.adapter = adapter —> mPager.setAdapter(adapter);

类似于setText()或者setAdapter()等设置的方法,在kotlin中都可以直接使用pager.adapter进行设置(TextView.text = “字符串")


举一反三,通过以上的对比,相信对kotlin的使用和相对应的Java代码已经有了一定了解,接下来看看adapter这个类

class PagerAdapter(fm: FragmentManager?) : FragmentPagerAdapter(fm) {
    private val titles = arrayOf("天", "地", "玄", "黄")
    override fun getItem(position: Int): Fragment {
        val fragment = MyFragment()
        val bundle = Bundle()
        bundle.putString("title", titles[position])
        fragment.arguments = bundle
        return fragment
    }

    override fun getCount(): Int {
        return titles.size
    }
}

在Java中

public class PagerAdapter extends FragmentPagerAdapter {  
   
    public PagerAdapter(FragmentManager fm) {  
        super(fm);  
    }  

这样的构造方法在kotlin中变成了
class PagerAdapter(fm: FragmentManager?) : FragmentPagerAdapter(fm) {
更加简洁,当然,有时候,我们需要传入更多参数,这个时候就需要给这个类添加次构造函数
lateinit var list:Array<Fragment>
    constructor(fm: FragmentManager?,list: Array<Fragment>) : this(fm){
        this.list = list
    }

然后就是Fragment

class MyFragment: Fragment() {
    
    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        var view:View = inflater!!.inflate(R.layout.myfragment,null)
         view.find<TextView>(R.id.fragment_tv).text = arguments.get("title").toString()
        return view

    }
}

一样的继承,信息大家也已经知道了,同时

(T)View.findViewById(..) —> view.find<T>(...)

简单。

希望我所记录的对大家学习kotlin有用,我也会继续学习kotlin,后续会继续分享


发布了10 篇原创文章 · 获赞 1 · 访问量 4490
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览