3 回答
TA贡献1833条经验 获得超4个赞
我不认为你可以在一个 recyclerview 上使用 2 个适配器,但你可以做的是为你的适配器创建多个 viewholder 类型以实现不同类型的布局。
TA贡献1785条经验 获得超8个赞
您可以一次在一个适配器中RecyclerView添加一个或多个视图,而不是在一个适配器中使用两个适配器。您只需重写getItemViewType()适配器中的方法,如下所示:
@Override
public int getItemViewType(int position)
{
if(position==0)
return LAYOUT_ONE;
else
return LAYOUT_TWO;
}
你可以onCreateViewHolder像这样添加你的观点:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view =null;
RecyclerView.ViewHolder viewHolder = null;
if(viewType==LAYOUT_ONE)
{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.one,parent,false);
viewHolder = new ViewHolderOne(view);
}
else
{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.two,parent,false);
viewHolder= new ViewHolderTwo(view);
}
return viewHolder;
}
并onBindViewHolder()做这样的事情:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if(holder.getItemViewType()== LAYOUT_ONE)
{
// Typecast Viewholder
// Set Viewholder properties
// Add any click listener if any
}
else {
ViewHolderOne vaultItemHolder = (ViewHolderOne) holder;
vaultItemHolder.name.setText(displayText);
vaultItemHolder.name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
.......
}
});
}
}
添加回答
举报