我想创建一个recyclerview,当它在列表中看到LIQUID作为pid时,它将使用具有自己布局的ViewWholder2。否则,它将使用具有自己布局的viewholder1。
问题是我创建的recyclerview只显示一个ViewWholder。如果位置0 pid为液体,则viewholder为ViewHolder2,即使对于列表上的后续项,pid不再为液体。简而言之,位置0上的pid值将指示整个列表的查看器。
我还在揣摩RecolyerView的曲折,还没有完全理解。
类MyOrderCart(var MyOrder:MutableList,var MyMutableList:MutableList):RecyclerView.Adapter(){
inner class ViewHolder1(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindView1(mycartlist: MyOrderList){
itemView.nameView.text = mycartlist.name
itemView.sizeView.text = "Size: ${mycartlist.size}"
var iprice = mycartlist.price
itemView.priceView.text = "Price: $iprice"
var icount = mycartlist.count
itemView.countView.text = "Count: $icount"
var itotal = mycartlist.itemtotal
itemView.itemtotalView.text = "Subtotal: $itotal"
var image_checkout = itemView.findViewById(R.id.image_checkout) as ImageView
var checkout_deletebutton = itemView.findViewById(R.id.checkout_deletebutton) as ImageButton
var checkout_editcount = itemView.findViewById(R.id.checkout_editcount) as ImageButton
var mytime = System.currentTimeMillis()
try {
Glide.with(image_checkout.getContext()).load(mycarthtml" target="_blank">list.imageUrl)
.signature(ObjectKey(mytime)).into(image_checkout)
.clearOnDetach()
} finally {
image_checkout.setImageResource(R.drawable.noimage)
}
}
}
inner class ViewHolder2(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindView2(mycartlist: MyOrderList){
itemView.checkout_inside_textview.text = mycartlist.pid
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
var myorderviewtype = myOrder.get(viewType)
return when (myorderviewtype.pid) {
"LIQUOR" -> {
ViewHolder2(
LayoutInflater.from(parent.context)
.inflate(R.layout.insidecheckout_label, parent, false)
)
}
"NOODLES" -> {
ViewHolder2(
LayoutInflater.from(parent.context)
.inflate(R.layout.insidecheckout_label, parent, false)
)
}
else -> {
ViewHolder1(
LayoutInflater.from(parent.context)
.inflate(R.layout.layout_insidecheckout, parent, false)
)
}
}
}
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, position: Int) {
val gsonRaw = GsonBuilder().create()
var pos = viewHolder.getAdapterPosition()
var mycartlist: MyOrderList = myOrder.get(position)
when (viewHolder) {
is ViewHolder2 -> {
val liquorviewHolder = viewHolder as ViewHolder2
liquorviewHolder.bindView2(mycartlist)
}
is ViewHolder1 -> {
val liquorviewHolder = viewHolder as ViewHolder1
liquorviewHolder.bindView1(mycartlist)
}
}
}
在适配器类中,需要重写GetItemViewType
方法。像这样:
override fun getItemViewType(position: Int): Int {
// return view type according to position
// get your pid using position
// return 0 for "LIQUOR", 1 for "NOODLES" and 2 for anything else
// you have to return an integer value only, according to the method signature
}
然后,在OnCreateViewWholder
方法中,使用类型为int的viewType参数来膨胀所需的视图:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when (viewType) {
0 -> {
ViewHolder2(
LayoutInflater.from(parent.context)
.inflate(R.layout.insidecheckout_label, parent, false)
)
}
1 -> {
ViewHolder2(
LayoutInflater.from(parent.context)
.inflate(R.layout.insidecheckout_label, parent, false)
)
}
else -> {
ViewHolder1(
LayoutInflater.from(parent.context)
.inflate(R.layout.layout_insidecheckout, parent, false)
)
}
}
}
上、下、左、右四个方向滑动显示底部视图。 作者说:这个应用在主要是通过一个第三方框架(ViewDeck),实现侧边栏滑动切换视图,顶部和底部滑动切换视图。 [Code4App.com]
本文向大家介绍AngularJS实现使用路由切换视图的方法,包括了AngularJS实现使用路由切换视图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS实现使用路由切换视图的方法。分享给大家供大家参考,具体如下: 下面是一个简单的学生信息管理实例。 注意:除了引用angular.js之外,还要引用angular-route.js。 1、创建index.html主视图
本文向大家介绍AngularJS入门教程之多视图切换用法示例,包括了AngularJS入门教程之多视图切换用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS多视图切换用法。分享给大家供大家参考,具体如下: 在AngularJS应用中,我们可以將html碎片写在一个单独的文件中,然后在其他页面中將该段碎片加载进来。如果有多个碎片文件,我们还可以在控制器中根据用户的操作
目前,我在为RecycleView定制多视图类型。我找到了很多解决这个问题的方法,但我会分享我的方法。 不同的是使用定义ViewType。 更多细节请参见我的答案。(只想分享)。
以下是活动2的代码:包helloworld.app; 以下是活动1的xml文件代码: 编辑:以下是来自logcat的错误消息 08-01 07:01:11.673:E/AndroidRuntime(1326):at Android.view.view$1.onclick(View.java:3578) 08-01 07:01:11.673:E/AndroidRuntime(1326):at And
我正在尝试在Kotlin和碎片中做视图绑定。 但是当它有很多对象的时候。我需要给它下个定义。所以我不得不看: Kotlin Android视图绑定:findViewById vs Butternife vs Kotlin Android扩展 和 但是我在Android Studio中找不到 我可以在我的程序中做什么?