RecyclerView+CardView打造漂亮的下拉列表

(从java转到kotlin真是钻心的痛啊)

接着上一篇

列表的原理在java和kotlin都是一样的,但是语法一个不对就要查半天。。。

首先呢,定义一个viewholder,这个很简单

然后定义adapter,在传入的参数有两个,分别是控件视图和信息列表,然后adapter把它们组合到一起,然后用recyclerview调用这个adapter就可以了,好,还算简单

然后打算初始化一个list,而且不会kotlin里面的循环,网上一查是for(i in 1..15),行,我就这么用。

然后由于kotlin不太一样,list没有add!什么鬼。。。

后来发现,有一个叫mutablelistof函数,可以初始化一个list,对,想起来没,kotin要求定义时必须初始化

而且只有定义准确了之后,add函数才会真正存在(其实它是存在的)

定义时的语句recyclerView = findViewById(R.id.id_main_recyclerView)recyclerView.layoutManager = LinearLayoutManager(this)recyclerView.adapter = MyRecyclerViewAdapter(this, stringList)

但是在最后接受adapter的时候用的是this,就是整个activity的一个实例,就是这样。

成功,编译一下试试看,emmmm,出现错误退出了,就知道会这样。

然后发现这条语句报语法错误

recyclerView : RecyclerView = findViewById(R.id.main_recyclerView)as RecyclerView

 

Type inference failed: Not enough information to infer parameter T in   fun <T : View!> findViewById ( id: Int ) : T! Please specify it explicitly.

网上明明都是这么写的啊摔,没关系,用java的形式改一下看看行不行

recyclerView : RecyclerView = < RecyclerView>findViewById(R.id.main_recyclerView)

意料之中,不行,没关系,继续度娘,然后发现要这么写

recyclerView : RecyclerView =findViewById <RecyclerView>(R.id.main_recyclerView)

好吧,我佛了。但这回真的行了,另外它与是不是什么类型的变量没有关系了

崩溃编译了几个小时,终于成功运行了,虽然不知道它是怎么捣鼓好的,但这是一个新的开始啊!

没想到的是,又出现问题了,这回是想添加一个linear layout布局,但是它好像是wrapcontent,只填充了一半。。。但girdlayout就没有事,真的是无语了,在这个时候我也没办法解决,我也很绝望,所以我不停的去网上看文章,后来看到了前面提到的那篇文章,才知道,假如使用.inflate(R.layout.xx,null)加载布局,没有父容器,得到的布局的宽高都是wrap_content的

对于下面阴影的问题,就让控件的margin增大一点,让阴影显示出来就好了

越来越感觉recyclerview是真的强大,几个参数的变化,就可以形成好几种排版布局模式,真的很强,而且收缩宽度从另外一方面来讲也是非常有用的。

填充的话这样填充

var view: View = LayoutInflater.from(context).inflate(R.layout.view_card, parent, false)

这样横向是没什么问题了,但是纵向又被无限拉大了,怎么这么多坑啊?

没关系,我脾气好,接着找找错误

原来在cardview的xml里,总linearlayout上出现了一个height= match_parent,真的是。。。

好了,现在是真的没事了。

 

嗯,不错,海星。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值