gpt4 book ai didi

android - 在 onCreateViewHolder 中获得位置

转载 作者:IT老高 更新时间:2023-10-28 23:29:16 27 4
gpt4 key购买 nike

我正在使用支持库 v7 将我的 ListView 转换为 RecyclerView。

我有 2 个不同的布局要加载到 RecyclerView 中。在 ListView 中,我在 getView() 方法中获取了项目的位置,并能够为该行加载适当的布局。但在 RecyclerView 中,onCreateViewHolder 没有位置参数。

还有其他方法可以实现吗?

PS:来自 Google 的 Inbox 应用在 RecyclerView 中显示不同的布局(可能是这样)。我认为他们可能没有使用 ListView 因为 RecyclerView

的性能改进
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v=null;

MyVO vo = voList.get(???POSITION???);

switch(vo.getType()){
case TYPE_1:
v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.layout1, viewGroup, false);
break;
case TYPE_2:
v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.layout2, viewGroup, false);
break;
}
return new ViewHolder(v);
}

最佳答案

首先,重写getItemViewType方法:

@Override
public int getItemViewType(int position) {
//Implement your logic here
MyVO vo = voList.get(position);
return vo.getType();
}

那么你可以简单地使用onCreateViewHolder的第二个参数:

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v=null;

switch(viewType){
case TYPE_1:
v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.layout1, viewGroup, false);
break;
case TYPE_2:
v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.layout2, viewGroup, false);
break;
}
return new ViewHolder(v);
}

关于android - 在 onCreateViewHolder 中获得位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26708525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com