我在Adapter类中使用以下代码
在RecyclerView中显示数据
,但现在我希望使用不同的布局在相同 RecyclerView 中显示来自其他 ArrayList
的数据(在某些位置
,例如:第一个位置和第六个位置)。
那个不同的布局(假设:another_layout.xml)包含2个TextView和一个图像,也想要也可以在该布局的监听器上实现点击。
@Override
public PlaylistCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// inflate a card layout
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.youtube_video_card, parent, false);
// populate the viewholder
ViewHolder vh = new ViewHolder(v);
return vh;
}
最佳答案
RecyclerView 具有多种布局
1. 重写 getItemViewType(intposition) 方法
例如,我有两个布局layout1和layout2。我希望layout1位于顶部,然后layout2。所以 getItemViewType 会是这样的
@Override
public int getItemViewType(int position) {
if(position == 0){ //for layout1
return 1;
}else{
return 2; //for layout2
}
}
2.每个布局都有不同的viewholder,如下所示
class ViewHolder_LayoutOne extends RecyclerView.ViewHolder{
TextView name;
//Constructor
}
class ViewHolder_LayoutTwo extends RecyclerView.ViewHolder{
TextView name;
//Constructor
}
3.根据位置inflate不同的布局
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder vh = null;
if(viewType == 1){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_layout_one,parent,false);
vh = new MyViewHolder_LayoutOne(view);
}else if(viewType == 2){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_layout_two,parent,false);
vh = new MyViewHolder_LayoutTwo(view);
}
return vh;
}
4.根据立场绑定(bind)你的观点
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch(getItemViewType(position)){
case 1: //for layout 1
((ViewHolder_LayoutOne)holder).name.setText("");
break;
case 2:// for layout 2
((ViewHolder_LayoutTwo)holder).name.setText("");
break;
}
}
5.现在最重要的getItemCount()方法//返回浏览数
@Override
public int getItemCount() {
return toptitles.length + 1;
// as i have only layout at the top and the remaining size equals the length of the array toptitles.So the overall length would be
//number of views of layout1 + number of views of layout2
}
希望这有帮助!!!
关于java - RecyclerView 显示来自 2 种不同布局的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41116503/