3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個贊
對 RecyclerView 適配器使用 2 種 ViewHolder,而不是在 1 個 RecyclerView 中使用 2 個適配器

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個贊
我不認(rèn)為你可以在一個 recyclerview 上使用 2 個適配器,但你可以做的是為你的適配器創(chuàng)建多個 viewholder 類型以實(shí)現(xiàn)不同類型的布局。

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個贊
您可以一次在一個適配器中RecyclerView添加一個或多個視圖,而不是在一個適配器中使用兩個適配器。您只需重寫getItemViewType()適配器中的方法,如下所示:
@Override
public int getItemViewType(int position)
{
if(position==0)
return LAYOUT_ONE;
else
return LAYOUT_TWO;
}
你可以onCreateViewHolder像這樣添加你的觀點(diǎn):
@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) {
.......
}
});
}
}
添加回答
舉報