//在开发过程中,多布局显示item是非常重要的,下面的代码是自定义的adapter显示垂直和水平布局下的item public class MyAdapter extends BaseAdapter { private final List<AnimaDec.ResultBean.BookListBean> list; private final Context context; //两种布局 private int typeTotal=2; //水平布局的索引 private final int atype=0; //垂直布局的索引 private final int btype=1; public MyAdapter(Context context, List<AnimaDec.ResultBean.BookListBean> list) { this.context=context; this.list=list; } public void addlist(List<AnimaDec.ResultBean.BookListBean> list2){ list.addAll(list2); } //list数量 @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } //布局类型 @Override public int getItemViewType(int position) { AnimaDec.ResultBean.BookListBean bookListBean = list.get(position); String type = bookListBean.getArea(); if(type.equals("国漫")) { return atype; } else { return btype; } } //布局总数 @Override public int getViewTypeCount() { return typeTotal; } //自定义布局getView @Override public View getView(int i, View view, ViewGroup viewGroup) { //优化自定义布局 ViewHolder1 vh1=null; ViewHolder2 vh2=null; //获得布局类型总数 int type = getItemViewType(i); if(view==null) { switch (type) { case atype: vh1 = new ViewHolder1(); view = View.inflate(context, R.layout.horizontal_item, null); vh1.tv_title = view.findViewById(R.id.tv_title); vh1.tv_kind = view.findViewById(R.id.tv_king); vh1.iv_horizontal = view.findViewById(R.id.iv_horizontal); view.setTag(vh1); break; case btype: vh2 = new ViewHolder2(); view = View.inflate(context, R.layout.vertical_item, null); vh2.tv_title2 = view.findViewById(R.id.tv_title2); vh2.tv_kind2 = view.findViewById(R.id.tv_king2); vh2.iv_vertical = view.findViewById(R.id.iv_vertical); view.setTag(vh2); break; } } else { switch (type){ case atype: vh1= (ViewHolder1) view.getTag(); break; case btype: vh2= (ViewHolder2) view.getTag(); break; } } //获得当前对象 AnimaDec.ResultBean.BookListBean listBean = list.get(i); switch (type){ case atype: //修改文本内容 vh1.tv_title.setText(listBean.getName()); vh1.tv_kind.setText(listBean.getArea()); //使用ImageLoader加载布局(ImageLoader看文章列表有介绍) ImageLoader.getInstance().displayImage(listBean.getCoverImg(),vh1.iv_horizontal); break; case btype: vh2.tv_title2.setText(listBean.getName()); vh2.tv_kind2.setText(listBean.getArea()); ImageLoader.getInstance().displayImage(listBean.getCoverImg(),vh2.iv_vertical); break; } return view; } //优化类 class ViewHolder1{ TextView tv_title; TextView tv_kind; ImageView iv_horizontal; } class ViewHolder2{ TextView tv_title2; TextView tv_kind2; ImageView iv_vertical; } } //自定义布局需要注意:有几种布局就需要几个优化类。
多布局的自定义Adapter
最新推荐文章于 2022-01-25 17:08:45 发布