pinguo-zhouwei / MZBannerView

仿魅族BannerView,图片轮播控件,支持多种模式切换:普通ViewPager使用,普通Banner使用,仿魅族Banner使用。
2.31k stars 421 forks source link

kotlin 错误 #9

Closed yangjiangs closed 6 years ago

yangjiangs commented 7 years ago

Out-projected type 'MZBannerView<>!' prohibits the use of 'public open fun setPages(datas: (Mutable)List<T!>!, mzHolderCreator: MZHolderCreator<(raw) MZViewHolder<>!>!): Unit defined in com.zhouwei.mzbanner.MZBannerView'

作者考虑 kolitn 兼容。控件没有指明泛型的实例

pinguo-zhouwei commented 7 years ago

收到

yangjiangs commented 7 years ago

好的

WGwangguan commented 6 years ago

今天用,kotlin 还是没支持。询问有什么解决方案么

pinguo-zhouwei commented 6 years ago

80

pinguo-zhouwei commented 6 years ago

该问题合并到 #80

pinguo-zhouwei commented 6 years ago

你能贴一下代码吗? 我用kotlin 试了一下没问题,代码如下:

class MainActivity : AppCompatActivity() {
    private var mBanner:MZBannerView<Any>? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mBanner = findViewById(R.id.banner)

        var listString = listOf(R.drawable.banner1,R.drawable.banner2,R.drawable.banner3)
        mBanner?.setPages(listString, {
            BannerViewHolder()
        })
    }

    override fun onResume() {
        super.onResume()
        mBanner?.start()
    }

    override fun onPause() {
        super.onPause()
        mBanner?.pause()
    }

}

class BannerViewHolder:MZViewHolder<Int>{
    private var mImageView:ImageView? = null
    override fun onBind(p0: Context?, p1: Int, p2: Int?) {
        if (p2 != null) {
            mImageView?.setImageResource(p2)
        }
    }

    override fun createView(context: Context?): View {
        val view = LayoutInflater.from(context).inflate(R.layout.banner, null)
        mImageView = view.findViewById(R.id.image_view)
        return view
    }

}

image