Android开发-listview实现多条目展示

如果我们的listview做的很好了 那么多条目对你来说就很简单了,因为多条目是基于listview的 它们只是在适配器中有所不同

现在我们来看一下适配器
public class MyAdapter extends BaseAdapter {

	private ArrayList<JsonBean.NewslistBean> list;
    private Context context;

    public MyAdapter(ArrayList<JsonBean.NewslistBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getItemViewType(int position) {
        if (position%2==0){
            //返回第一种视图--左边一张图片--右边是标题和内容
            return 0;
        }else{
            //返回第二种视图--上边是标题  下边三张图片
            return 1;
        }
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getCount() {
        return list.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int type = getItemViewType( position );
        switch (type){
            case 0://第一种视图的情况
                Hoilder1 hoilder1;
                if (convertView == null) {
                    convertView= View.inflate( context, R.layout.list_item, null );
                    //新建一个Hoilder1
                    hoilder1 = new Hoilder1();
                    hoilder1.img1=convertView.findViewById( R.id.img1 );
                    hoilder1.tv_title1=convertView.findViewById( R.id.tv_title1 );
                    hoilder1.tv_description1=convertView.findViewById( R.id.tv_description1 );
                    convertView.setTag( hoilder1 );
                }else{
                    hoilder1= (Hoilder1)convertView.getTag();
                }
                //给控件赋值
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder1.img1 );
                hoilder1.tv_title1.setText( list.get( position ).getTitle() );
                hoilder1.tv_description1.setText( list.get( position ).getDescription() );
                break;

            case 1://第二种视图的情况
                Hoilder2 hoilder2;
                if (convertView == null) {
                    convertView= View.inflate( context, R.layout.list_item1, null );
                    //新建一个Hoilder2
                    hoilder2 = new Hoilder2();
                    hoilder2.img2_1=convertView.findViewById( R.id.img2_1 );
                    hoilder2.img2_2=convertView.findViewById( R.id.img2_2 );
                    hoilder2.img2_3=convertView.findViewById( R.id.img2_3 );
                    hoilder2.tv_description2=convertView.findViewById( R.id.tv_description2);
                    convertView.setTag( hoilder2 );
                }else{
                    hoilder2= (Hoilder2)convertView.getTag();
                }
                //给控件赋值
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_1);
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_2 );
                Glide.with( context ).load( list.get( position ).getPicUrl() ).into( hoilder2.img2_3 );
                hoilder2.tv_description2.setText( list.get( position ).getDescription() );
                break;
        }
        return convertView;
    }

    //新建一个Hoilder1
    class Hoilder1{
        ImageView img1;
        TextView tv_title1;
        TextView tv_description1;
    }
    //新建一个Hoilder2
    class Hoilder2{
        ImageView img2_1;
        ImageView img2_2;
        ImageView img2_3;
        TextView tv_description2;
    }

}

猜你喜欢

转载自blog.csdn.net/qq_25560357/article/details/84973717