Android RecyclerView.Adapter的写法123
  Iw6GGwMnM9Fb 2023年11月02日 54 0


1、ListAdapter(listView格式)

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListHolder> {

int icons[] = {R.drawable.vector_icon_cloud, R.drawable.vector_icon_movie, R.drawable.vector_icon_laptop, R.drawable.vector_icon_loop, R.drawable.vector_icon_menu, R.drawable.vector_icon_mood, R.drawable.vector_icon_palette, R.drawable.vector_icon_search, R.drawable.vector_icon_time, R.drawable.vector_icon_work};
String names[] = {"Cloud", "Movie", "Laptop", "Loop", "Menu", "Mood", "Palette", "Search", "Time", "Work"};
Context context;
boolean flag;

public ListAdapter(Context context, boolean flag) {
this.context = context;
this.flag = flag;
}




@Override
public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(context).inflate(flag ? R.layout.list_item : R.layout.list_item_h, parent, false);
return new ListHolder(view);
}
@Override
public void onBindViewHolder(ListHolder holder, int position) {
holder.setData(position);
}

@Override
public int getItemCount() {
return 1000;
}


class ListHolder extends RecyclerView.ViewHolder {
ImageView icon;
TextView name;
TextView subName;

public ListHolder(View itemView) {
super(itemView);
icon = (ImageView) itemView.findViewById(R.id.icon);
name = (TextView) itemView.findViewById(R.id.name);
subName = (TextView) itemView.findViewById(R.id.subname);
}

public void setData(int position) {
icon.setImageDrawable(context.getResources().getDrawable(icons[position % 10]));
name.setText(names[position % 10]);
subName.setText("This is position " + position);
}


}
}

2、GridAdapter(gridViewg格式)

public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ListHolder>{

int icons[] = {R.drawable.g1,R.drawable.g2,R.drawable.g3,R.drawable.g4,R.drawable.g5,R.drawable.g6,R.drawable.g7,R.drawable.g9,
R.drawable.g10,R.drawable.g11,R.drawable.g12,R.drawable.g13,R.drawable.g14,R.drawable.g15,R.drawable.g16,R.drawable.g17,R.drawable.g18,R.drawable.g19,
R.drawable.g20,R.drawable.g21,R.drawable.g22,R.drawable.g23,R.drawable.g24,R.drawable.g25,R.drawable.g26,R.drawable.g27,R.drawable.g28,R.drawable.g29,};

String names[] = {"浏览器","输入法","健康","效率","教育","理财","阅读","个性化","购物","资讯","生活","工具","出行","通讯","拍照","社交","影音","安全","休闲","棋牌","益智","射击","体育","儿童","网游","角色","策略","经营","竞速"};
Context context;
boolean flag;
public GridAdapter(Context context, boolean flag){
this.context = context;
this.flag = flag;
}

@Override
public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(context).inflate(R.layout.grid_item, parent, false);

return new ListHolder(view);
}


@Override
public void onBindViewHolder(ListHolder holder, int position) {
holder.setData(position);
}

@Override
public int getItemCount() {
return 1000;
}


class ListHolder extends RecyclerView.ViewHolder {
ImageView icon;
TextView name;

public ListHolder(View itemView) {
super(itemView);
icon = (ImageView) itemView.findViewById(R.id.pic);
name = (TextView) itemView.findViewById(R.id.name);
}

public void setData(int position){
icon.setImageDrawable(context.getResources().getDrawable(icons[position % icons.length]));
name.setText(names[position % names.length]);
}
}
}

3、StaggeredGridAdapter(瀑布流)

public class StaggeredGridAdapter extends RecyclerView.Adapter<StaggeredGridAdapter.ListHolder>{

Context context;
boolean flag;
int iconsV[] = {R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,R.drawable.p7,R.drawable.p9,
R.drawable.p10,R.drawable.p11,R.drawable.p12,R.drawable.p13,R.drawable.p14,R.drawable.p15,R.drawable.p16,R.drawable.p17,R.drawable.p18,R.drawable.p19,
R.drawable.p20,R.drawable.p21,R.drawable.p22,R.drawable.p23,R.drawable.p24,R.drawable.p25,R.drawable.p26,R.drawable.p27,R.drawable.p28,R.drawable.p29,
R.drawable.p30,R.drawable.p31,R.drawable.p32,R.drawable.p33,R.drawable.p34,R.drawable.p35,R.drawable.p36,R.drawable.p37,R.drawable.p38,R.drawable.p39,
R.drawable.p40,R.drawable.p41,R.drawable.p42,R.drawable.p43,R.drawable.p44};

int iconsH[] = {R.drawable.h1,R.drawable.h2,R.drawable.h3,R.drawable.h4,R.drawable.h5,R.drawable.h6,R.drawable.h7,R.drawable.h9,
R.drawable.h10,R.drawable.h11,R.drawable.h12,R.drawable.h13,R.drawable.h14,R.drawable.h15,R.drawable.h16,R.drawable.h17,R.drawable.h18,R.drawable.h19,
R.drawable.h20,R.drawable.h21,R.drawable.h22,R.drawable.h23,R.drawable.h24,R.drawable.h25,R.drawable.h26,R.drawable.h27,R.drawable.h28,R.drawable.h29,
R.drawable.h30,R.drawable.h31,R.drawable.h32,R.drawable.h33,R.drawable.h34,R.drawable.h35,R.drawable.h36,R.drawable.h37,R.drawable.h38,R.drawable.h39,
R.drawable.h40,R.drawable.h41,R.drawable.h42,R.drawable.h43,R.drawable.h44};
public StaggeredGridAdapter(Context context, boolean flag){
this.context = context;
this.flag = flag;
}

@Override
public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(flag ? R.layout.staggered_grid_item : R.layout.staggered_grid_item_h, parent, false);
return new ListHolder(view);
}


@Override
public void onBindViewHolder(ListHolder holder, int position) {
holder.setData(position);
}

@Override
public int getItemCount() {
return 1000;
}


class ListHolder extends RecyclerView.ViewHolder {
ImageView icon;
TextView name;

public ListHolder(View itemView) {
super(itemView);
icon = (ImageView) itemView.findViewById(R.id.pic);
name = (TextView) itemView.findViewById(R.id.name);
}

public void setData(int position){
if (flag) {
icon.setImageResource(iconsV[position % iconsV.length]);
} else {
icon.setImageResource(iconsH[position % iconsH.length]);
}
name.setText("This is position "+ position);
}


}
}

四:用法

private View initListView(boolean isVer) {
toolbar.setSubtitle(isVer ?"LinearLayoutManager Vertical":"LinearLayoutManager Horizontal");

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(isVer ? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new ListAdapter(this,isVer));

// recyclerView.setHasFixedSize(true);
recyclerView.setBackgroundColor(Color.WHITE);
return recyclerView;
}

private View initGridView(boolean isVer) {
toolbar.setSubtitle(isVer ?"GridLayoutManager Vertical":"GridLayoutManager Horizontal");
GridLayoutManager layoutManager = new GridLayoutManager(this,isVer ?3:4);
layoutManager.setOrientation(isVer ? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);

recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(new GridAdapter(this,isVer));
return recyclerView;
}

private View initStaggeredGridView(boolean isVer) {
toolbar.setSubtitle(isVer ?"StaggeredGridLayoutManager Vertical":"StaggeredGridLayoutManager Horizontal");
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,isVer ? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new StaggeredGridAdapter(this,isVer));
return recyclerView;
}

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ehrZuhofWJiC   2024年04月26日   36   0   0 日志Java
  Fo7woytj0C0D   2023年12月23日   31   0   0 pythonsedidepythonidesed
Iw6GGwMnM9Fb