Java 不同类型的Recyclerview

Java 不同类型的Recyclerview,java,android,android-recyclerview,Java,Android,Android Recyclerview,嗨,伙计们,我正在尝试用不同的集合填充recycleverview。。例如,我得到了2个列表,比如说客户列表和供应商列表 我想要实现的是: 客户标题 客户1 客户2 供应商标题 供应商1 供应商2 可能吗?谢谢。 对不起,我的英语不好使用RecyclerView可以做到这一点,您应该重写getItemViewType()方法 像这样: private class CustomAdapter extends RecyclerView.Adapter<RecyclerVi

嗨,伙计们,我正在尝试用不同的集合填充
recycleverview
。。例如,我得到了2个列表,比如说客户列表和供应商列表

我想要实现的是:

  • 客户标题

  • 客户1

  • 客户2


  • 供应商标题

  • 供应商1

  • 供应商2

可能吗?谢谢。

对不起,我的英语不好

使用
RecyclerView
可以做到这一点,您应该重写
getItemViewType()
方法

像这样:

private class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private static final int TYPE_1 = 1;
    private static final int TYPE_2 = 2;
    private static final int TYPE_3 = 3;
    // more types...

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case TYPE_1:
                break;
            case TYPE_2:
                break;
            case TYPE_3:
                break;
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        switch (getItemViewType(position)) {
            case TYPE_1:
                break;
            case TYPE_2:
                break;
            case TYPE_3:
                break;
        }
    }

    @Override
    public int getItemViewType(int position) {
        if(position == 1) {
            return TYPE_1;
        } else if(position == 2) {
            return TYPE_2;
        } else 
            return TYPE_3
    }

    @Override
    public int getItemCount() {
        return 10;
    }
}
私有类CustomAdapter扩展了RecyclerView.Adapter{
私有静态最终整数类型_1=1;
私有静态最终整数类型_2=2;
私有静态最终整数类型_3=3;
//更多类型。。。
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
开关(视图类型){
案例类型_1:
打破
案例类型2:
打破
案例类型_3:
打破
}
}
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
开关(getItemViewType(位置)){
案例类型_1:
打破
案例类型2:
打破
案例类型_3:
打破
}
}
@凌驾
public int getItemViewType(int位置){
如果(位置==1){
返回类型_1;
}否则如果(位置==2){
返回类型_2;
}否则
返回类型_3
}
@凌驾
public int getItemCount(){
返回10;
}
}

使用
RecyclerView
可以做到这一点,您应该重写
getItemViewType()
方法

像这样:

private class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private static final int TYPE_1 = 1;
    private static final int TYPE_2 = 2;
    private static final int TYPE_3 = 3;
    // more types...

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case TYPE_1:
                break;
            case TYPE_2:
                break;
            case TYPE_3:
                break;
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        switch (getItemViewType(position)) {
            case TYPE_1:
                break;
            case TYPE_2:
                break;
            case TYPE_3:
                break;
        }
    }

    @Override
    public int getItemViewType(int position) {
        if(position == 1) {
            return TYPE_1;
        } else if(position == 2) {
            return TYPE_2;
        } else 
            return TYPE_3
    }

    @Override
    public int getItemCount() {
        return 10;
    }
}
私有类CustomAdapter扩展了RecyclerView.Adapter{
私有静态最终整数类型_1=1;
私有静态最终整数类型_2=2;
私有静态最终整数类型_3=3;
//更多类型。。。
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
开关(视图类型){
案例类型_1:
打破
案例类型2:
打破
案例类型_3:
打破
}
}
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
开关(getItemViewType(位置)){
案例类型_1:
打破
案例类型2:
打破
案例类型_3:
打破
}
}
@凌驾
public int getItemViewType(int位置){
如果(位置==1){
返回类型_1;
}否则如果(位置==2){
返回类型_2;
}否则
返回类型_3
}
@凌驾
public int getItemCount(){
返回10;
}
}

您可以这样在recyclerview中创建节

public class MainAdapter extends SectionedRecyclerViewAdapter<MainAdapter.MainVH> {

    @Override
    public int getSectionCount() {
        return 20; // number of sections.
    }

    @Override
    public int getItemCount(int section) {
        return 8; // number of items in section (section index is parameter).
    }

    @Override
    public void onBindHeaderViewHolder(MainVH holder, int section) {
        // Setup header view.
    }

    @Override
    public void onBindViewHolder(MainVH holder, int section, int relativePosition, int absolutePosition) {
        // Setup non-header view.
        // 'section' is section index.
        // 'relativePosition' is index in this section.
        // 'absolutePosition' is index out of all non-header items.
        // See sample project for a visual of how these indices work.
    }

    @Override
    public MainVH onCreateViewHolder(ViewGroup parent, int viewType) {
        // Change inflated layout based on 'header'. 
        View v = LayoutInflater.from(parent.getContext())
                .inflate(viewType == VIEW_TYPE_HEADER ? R.layout.header : R.layout.normal, parent, false);
        return new MainVH(v);
    }

    public static class MainVH extends RecyclerView.ViewHolder {

        public MainVH(View itemView) {
            super(itemView);
            // Setup view holder.
            // You'd want some views to be optional, e.g. for header vs. normal.
        }
    }
}
公共类主适配器扩展SectionedRecyclServiceAdapter{
@凌驾
public int getSectionCount(){
返回20;//节数。
}
@凌驾
公共整数getItemCount(整数部分){
返回8;//节中的项数(节索引为参数)。
}
@凌驾
BINDHEADERVIEWHOLDER上的公共无效(主VH支架,内部部分){
//设置标题视图。
}
@凌驾
BindViewHolder上的公共无效(主VH holder、int段、int相对位置、int绝对位置){
//设置非标题视图。
//“section”是节索引。
//“相对位置”是本节中的索引。
//“绝对位置”是所有非标题项的索引。
//有关这些索引如何工作的可视化信息,请参见示例项目。
}
@凌驾
public MainVH onCreateViewHolder(视图组父级,int-viewType){
//根据“标题”更改充气布局。
视图v=LayoutInflater.from(parent.getContext())
.充气(viewType==视图类型标题?R.layout.HEADER:R.layout.normal,parent,false);
返回新的主VH(v);
}
公共静态类MainVH扩展了RecyclerView.ViewHolder{
公共MainVH(查看项目视图){
超级(项目视图);
//设置视图保持架。
//您可能希望某些视图是可选的,例如页眉视图和普通视图。
}
}
}


您可以这样在recyclerview中创建节

public class MainAdapter extends SectionedRecyclerViewAdapter<MainAdapter.MainVH> {

    @Override
    public int getSectionCount() {
        return 20; // number of sections.
    }

    @Override
    public int getItemCount(int section) {
        return 8; // number of items in section (section index is parameter).
    }

    @Override
    public void onBindHeaderViewHolder(MainVH holder, int section) {
        // Setup header view.
    }

    @Override
    public void onBindViewHolder(MainVH holder, int section, int relativePosition, int absolutePosition) {
        // Setup non-header view.
        // 'section' is section index.
        // 'relativePosition' is index in this section.
        // 'absolutePosition' is index out of all non-header items.
        // See sample project for a visual of how these indices work.
    }

    @Override
    public MainVH onCreateViewHolder(ViewGroup parent, int viewType) {
        // Change inflated layout based on 'header'. 
        View v = LayoutInflater.from(parent.getContext())
                .inflate(viewType == VIEW_TYPE_HEADER ? R.layout.header : R.layout.normal, parent, false);
        return new MainVH(v);
    }

    public static class MainVH extends RecyclerView.ViewHolder {

        public MainVH(View itemView) {
            super(itemView);
            // Setup view holder.
            // You'd want some views to be optional, e.g. for header vs. normal.
        }
    }
}
公共类主适配器扩展SectionedRecyclServiceAdapter{
@凌驾
public int getSectionCount(){
返回20;//节数。
}
@凌驾
公共整数getItemCount(整数部分){
返回8;//节中的项数(节索引为参数)。
}
@凌驾
BINDHEADERVIEWHOLDER上的公共无效(主VH支架,内部部分){
//设置标题视图。
}
@凌驾
BindViewHolder上的公共无效(主VH holder、int段、int相对位置、int绝对位置){
//设置非标题视图。
//“section”是节索引。
//“相对位置”是本节中的索引。
//“绝对位置”是所有非标题项的索引。
//有关这些索引如何工作的可视化信息,请参见示例项目。
}
@凌驾
public MainVH onCreateViewHolder(视图组父级,int-viewType){
//根据“标题”更改充气布局。
视图v=LayoutInflater.from(parent.getContext())
.充气(viewType==视图类型标题?R.layout.HEADER:R.layout.normal,parent,false);
返回新的主VH(v);
}
公共静态类MainVH扩展了RecyclerView.ViewHolder{
公共MainVH(查看项目视图){
超级(项目视图);
//设置视图保持架。
//您可能希望某些视图是可选的,例如页眉视图和普通视图。
}
}
}