listview多条目加载的类

来源:互联网 发布:天天向上 欧弟 知乎 编辑:程序博客网 时间:2024/05/16 09:13
public class MainActivity extends AppCompatActivity {


    private ListView lv;
    private static final int TYPE_0 = 0;
    private static final int TYPE_1 = 1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //找控件
        lv = (ListView) findViewById(R.id.lv);
        //设置适配器
        lv.setAdapter(new MyBaseAdapter());










    }


    class MyBaseAdapter extends BaseAdapter{




        @Override
        public int getCount() {
            return 20;
        }


        @Override
        public Object getItem(int position) {
            return null;
        }


        @Override
        public long getItemId(int position) {
            return 0;
        }


        @Override
        public int getItemViewType(int position) {
            //得到某个条目的类型   假设 1 : 左边图右边文字  2 左边是文字右边图


            if(position % 2 == 0){//偶数
                return TYPE_0;//0 ,1,2
            }else{
                return TYPE_1;
            }


        }


        @Override
        public int getViewTypeCount() {//指定你要在这个当前这个ListView显示几种类型的条目
            return 2;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {


            /*TextView textView = new TextView(MainActivity.this);
            textView.setText("点击放大镜放大看"+position);
            textView.setHeight(100);*/


            //得到指定条目的布局类型
            int type = getItemViewType(position);


            ViewHolder holder = null;
            ViewHolder2 holder2 = null;


            switch (type){


                case 1:
                {
                    if(convertView == null) {


                        holder = new ViewHolder();
                        convertView = convertView.inflate(MainActivity.this, R.layout.item1, null);
                        holder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
                        holder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);
                        convertView.setTag(holder);


                    }else{
                        holder = (ViewHolder) convertView.getTag();
                    }
                }
                    break;
                case 0: {
                    if (convertView == null) {
                        holder2 = new ViewHolder2();
                        convertView = convertView.inflate(MainActivity.this, R.layout.item2, null);
                        holder2.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
                        holder2.tvContent = (TextView) convertView.findViewById(R.id.tvContent);


                        convertView.setTag(holder2);
                    } else {
                        holder2 = (ViewHolder2) convertView.getTag();
                    }
                }
                    break;
            }


        //定义一个switch,填充数据
            switch (type){


                case 0:
                {


                    holder2.tvContent.setText("大家都好都好");
                }
                    break;
                case 1:
                {
                    holder.tvContent.setText("附近的开发基地附近的咖啡机");
                }
                    break;
            }










            return convertView;
        }




        class ViewHolder{


            ImageView ivIcon;
            TextView tvContent;


        }


        class ViewHolder2{
            ImageView ivIcon;
            TextView tvContent;




        }








    }












}
原创粉丝点击