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(查看项目视图){
超级(项目视图);
//设置视图保持架。
//您可能希望某些视图是可选的,例如页眉视图和普通视图。
}
}
}