listview和recyclerview多布局

来源:互联网 发布:《网络黑白》 编辑:程序博客网 时间:2024/05/19 03:43

1.listview:

class MyAdapter extends BaseAdapter{    Context mContext;    LinearLayout linearLayout = null;    LayoutInflater inflater;    TextView tex;    final int VIEW_TYPE = 3;    final int TYPE_1 = 0;    final int TYPE_2 = 1;    final int TYPE_3 = 2;    public MyAdapter(Context context) {      // TODO Auto-generated constructor stub      mContext = context;      inflater = LayoutInflater.from(mContext);    }    @Override    public int getCount() {      // TODO Auto-generated method stub      return listString.size();    }    //每个convert view都会调用此方法,获得当前所需要的view样式    @Override    public int getItemViewType(int position) {      // TODO Auto-generated method stub      int p = position%6;      if(p == 0)        return TYPE_1;      else if(p < 3)        return TYPE_2;      else if(p < 6)        return TYPE_3;      else        return TYPE_1;    }    @Override    public int getViewTypeCount() {      // TODO Auto-generated method stub      return 3;    }    @Override    public Object getItem(int arg0) {      // TODO Auto-generated method stub      return listString.get(arg0);    }    @Override    public long getItemId(int position) {      // TODO Auto-generated method stub      return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {      // TODO Auto-generated method stub      viewHolder1 holder1 = null;      viewHolder2 holder2 = null;      viewHolder3 holder3 = null;      int type = getItemViewType(position);      //无convertView,需要new出各个控件      if(convertView == null)      {         Log.e("convertView = ", " NULL");        //按当前所需的样式,确定new的布局        switch(type)        {        case TYPE_1:          convertView = inflater.inflate(R.layout.listitem1, parent, false);          holder1 = new viewHolder1();          holder1.textView = (TextView)convertView.findViewById(R.id.textview1);          holder1.checkBox = (CheckBox)convertView.findViewById(R.id.checkbox);          Log.e("convertView = ", "NULL TYPE_1");          convertView.setTag(holder1);          break;        case TYPE_2:          convertView = inflater.inflate(R.layout.listitem2, parent, false);          holder2 = new viewHolder2();          holder2.textView = (TextView)convertView.findViewById(R.id.textview2);          Log.e("convertView = ", "NULL TYPE_2");          convertView.setTag(holder2);          break;        case TYPE_3:          convertView = inflater.inflate(R.layout.listitem3, parent, false);          holder3 = new viewHolder3();          holder3.textView = (TextView)convertView.findViewById(R.id.textview3);          holder3.imageView = (ImageView)convertView.findViewById(R.id.imageview);          Log.e("convertView = ", "NULL TYPE_3");          convertView.setTag(holder3);          break;        }      }else{        //有convertView,按样式,取得不用的布局        switch(type)        {        case TYPE_1:          holder1 = (viewHolder1) convertView.getTag();          Log.e("convertView !!!!!!= ", "NULL TYPE_1");          break;        case TYPE_2:          holder2 = (viewHolder2) convertView.getTag();          Log.e("convertView !!!!!!= ", "NULL TYPE_2");          break;        case TYPE_3:          holder3 = (viewHolder3) convertView.getTag();          Log.e("convertView !!!!!!= ", "NULL TYPE_3");          break;        }      }    //设置资源      switch(type)      {        case TYPE_1:          holder1.textView.setText(Integer.toString(position));          holder1.checkBox.setChecked(true);          break;        case TYPE_2:          holder2.textView.setText(Integer.toString(position));          break;        case TYPE_3:          holder3.textView.setText(Integer.toString(position));          holder3.imageView.setBackgroundResource(R.drawable.icon);          break;      }      return convertView;    }  }  //各个布局的控件资源  class viewHolder1{    CheckBox checkBox;    TextView textView;  }  class viewHolder2{    TextView textView;  }  class viewHolder3{    ImageView imageView;    TextView textView;  }}

2.recyclerview;

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    Context mContext;


    public MyAdapter(Context context){
        mContext = context;
    }






    class TextViewHolder extends RecyclerView.ViewHolder{


        public TextViewHolder(View itemView) {
            super(itemView);
        }
    }


    class ImageViewHolder extends RecyclerView.ViewHolder{
        public ImageViewHolder(View itemView) {
            super(itemView);
        }
    }







    @Override
    public int getItemViewType(int position) {
        return position%2;
    }



    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == 0){
            View view = LayoutInflater.from(mContext).inflate(R.layout.layout_textitem,parent,false);
            return new TextViewHolder(view);
        }else {
            return new ImageViewHolder(LayoutInflater.from(mContext).
                    inflate(R.layout.layout_imageitem,null));
        }
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {


    }


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







0 0