ListView多条目展示

多条目展示主要实现的是这两个方法
getViewTypeCount();//获取布局的数量
getItemViewType(int position) ;//判断加载那个布局
activity_main布局

 <ListView
       android:id="@+id/listview"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"></ListView>

listv1布局

<TextView
    android:id="@+id/imagev1"
    android:layout_width="30dp"
    android:layout_height="30dp"
    />

    <ImageView
        android:id="@+id/imagev2"
        android:layout_width="30dp"
        android:layout_height="30dp"
        />

listv2布局

 <ImageView
        android:id="@+id/imagev3"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@mipmap/ic_launcher"
        />

    <ImageView
        android:id="@+id/imagev4"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@mipmap/ic_launcher"/>
    <ImageView
        android:id="@+id/imagev5"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@mipmap/ic_launcher"/>

    <ImageView
        android:id="@+id/imagev6"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@mipmap/ic_launcher"/>

list3布局

 <ImageView
        android:id="@+id/image1"
        android:layout_width="30dp"
        android:layout_height="30dp" />

    <ImageView
        android:id="@+id/image2"
        android:layout_width="30dp"
        android:layout_height="30dp" />

    <ImageView
        android:id="@+id/image3"
        android:layout_width="30dp"
        android:layout_height="30dp" />

Dta类

public class Dta {
    private int id;
    private int photo;

    public int getPhoto() {
        return photo;
    }

    public void setPhoto(int photo) {
        this.photo = photo;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
public class MainActivity extends AppCompatActivity {
    ListView listView;
    public List<Dta> list = new ArrayList<>(); 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listview);
        //第一个对象
        Dta dta = new Dta();
        dta.setPhoto(R.drawable.a);
        dta.setId(0);
        list.add(dta);
        //第二个对象
        Dta dt = new Dta();
        dt.setPhoto(R.drawable.b);
        dt.setPhoto(R.drawable.c);
        dt.setPhoto(R.drawable.e);
        dt.setPhoto(R.drawable.h);
        dt.setId(1);
        list.add(dt);
        //第三个对象
        Dta dat = new Dta();
        dat.setId(2);
        dat.setPhoto(R.drawable.f);
        dat.setPhoto(R.drawable.g);
        dat.setPhoto(R.drawable.h);
        list.add(dat);
        //适配器实例化
        Myadapter myadapter = new Myadapter();
        //listview进行适配
        listView.setAdapter(myadapter);
    } 
    class Myadapter extends BaseAdapter {
        //代表着布局
        final int TYPE_1 = 0;
        final int TYPE_2 = 1;
        final int TYPE_3 = 2; 
        @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 View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder holder;
            //getItemViewType(int position)传回的值
            int type = getItemViewType(i);
            Log.e("=============", "getView: " + type);
            if (view == null) {
                holder = new ViewHolder();
                switch (type) {
                    case TYPE_1://第一个布局
                        view = View.inflate(MainActivity.this, R.layout.listv1, null);
                        holder.t = view.findViewById(R.id.imagev1);
                        holder.imagev2 = view.findViewById(R.id.imagev2);

                        break;
                    case TYPE_2://第二个布局
                        view = View.inflate(MainActivity.this, R.layout.listv2, null);
                        holder.imagev3 = view.findViewById(R.id.imagev3);
                        holder.imagev4 = view.findViewById(R.id.imagev4);
                        holder.imagev5 = view.findViewById(R.id.imagev5);
                        holder.imagev6 = view.findViewById(R.id.imagev6);
                        break;
                    case TYPE_3://第三个布局
                        view = View.inflate(MainActivity.this, R.layout.listv3, null);
                        holder.image1 = view.findViewById(R.id.image1);
                        holder.image2 = view.findViewById(R.id.image2);
                        holder.image3 = view.findViewById(R.id.image3);
                        break; 
                }
                view.setTag(holder);
            } else {
                holder = (ViewHolder) view.getTag();
            }
            switch (type) {
                case TYPE_1:
                    holder.t.setText(list.get(i).toString());
                    holder.imagev2.setImageResource(list.get(i).getPhoto());
                    break;
                case TYPE_2:
                    holder.imagev3.setImageResource(R.drawable.a);
                    holder.imagev4.setImageResource(R.drawable.b);
                    holder.imagev5.setImageResource(R.drawable.c);
                    holder.imagev6.setImageResource(R.drawable.f);
                    break;
                case TYPE_3:
                    holder.image1.setImageResource(list.get(i).getPhoto());
                    holder.image2.setImageResource(list.get(i).getPhoto());
                    holder.image3.setImageResource(list.get(i).getPhoto());
                    break;
            }
            return view;
        }

        //布局的总个数
        @Override
        public int getViewTypeCount() {
            return 3;
        }

        //判断id选择相应的布局
        @Override
        public int getItemViewType(int position) {
            int type = list.get(position).getId();
            Log.e("-----------", "getItemViewType: " + type);
            if (type == 0)
                return TYPE_1;
            else if (type == 1)
                return TYPE_2;
            else if (type == 2)
                return TYPE_3;
            else
                return TYPE_1;

        }

        class ViewHolder {
            TextView t;
            ImageView imagev2, imagev3, imagev4, imagev5, imagev6, image1, image2, image3;
        }
    }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值