ListView的多布局显示
来源:互联网 发布:linux 搭建lamp 编辑:程序博客网 时间:2024/06/06 07:37
1.首先,创建一个大的Info对象,对象内包含几个布局内的所有属性
package wz.listview_morestyle;/** * Created by 醇色 on 2016/12/26. */public class Info { private String mImg; private String mImg1; private String mTv; public Info() { } public Info(String mImg, String mImg1, String mTv) { this.mImg = mImg; this.mImg1 = mImg1; this.mTv = mTv; } public String getmImg() { return mImg; } public void setmImg(String mImg) { this.mImg = mImg; } public String getmImg1() { return mImg1; } public void setmImg1(String mImg1) { this.mImg1 = mImg1; } public String getmTv() { return mTv; } public void setmTv(String mTv) { this.mTv = mTv; }}
2.创建几个item的布局文件,个数随你的心意
3.创建listview的适配器
package wz.listview_morestyle;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.List;/** * Created by 醇色 on 2016/12/26. */public class MyAdapter extends BaseAdapter { private static final int STYLE_ONE=0; private static final int STYLE_TWO=1; private static final int STYLE_THREE=2; private static final int STYLEA_COUNT=3; private List<Info> list; private Context context; public MyAdapter(List<Info> list, Context context) { this.list = list; this.context = context; } @Override public int getItemViewType(int position) { if (position%2==0){ return STYLE_ONE; }else if (position%3==0){ return STYLE_TWO; }else{ return STYLE_THREE; } } @Override public int getViewTypeCount() { return STYLEA_COUNT; } @Override public int getCount() { if (list!=null){ return list.size(); } return 0; } @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_style1 holder1=null; ViewHolder_style2 holder2=null; ViewHolder_style3 holder3=null; int sytle_type=getItemViewType(i); if (view==null){ switch (sytle_type){ case STYLE_ONE: holder1=new ViewHolder_style1(); view=View.inflate(context,R.layout.sytle1,null); holder1.mImg_style1= (ImageView) view.findViewById(R.id.mImg_style1); view.setTag(holder1); break; case STYLE_TWO: holder2=new ViewHolder_style2(); view=View.inflate(context,R.layout.sytle2,null); holder2.mImg_style2= (ImageView) view.findViewById(R.id.mImg_style2); holder2.mTv_style2= (TextView) view.findViewById(R.id.mTv_style2); view.setTag(holder2); break; case STYLE_THREE: holder3=new ViewHolder_style3(); view=View.inflate(context,R.layout.sytle3,null); holder3.mImg_style3= (ImageView) view.findViewById(R.id.mImg_style3); holder3.mImg1_style3= (ImageView) view.findViewById(R.id.mImg1_style3); view.setTag(holder3); break; } }else{ switch (sytle_type){ case STYLE_ONE: holder1= (ViewHolder_style1) view.getTag(); break; case STYLE_TWO: holder2= (ViewHolder_style2) view.getTag(); break; case STYLE_THREE: holder3= (ViewHolder_style3) view.getTag(); break; } } switch (sytle_type){ case STYLE_ONE: Glide.with(context).load(list.get(i).getmImg()).into(holder1.mImg_style1); break; case STYLE_TWO: Glide.with(context).load(list.get(i).getmImg()).into(holder2.mImg_style2); holder2.mTv_style2.setText(list.get(i).getmTv()); break; case STYLE_THREE: Glide.with(context).load(list.get(i).getmImg()).into(holder3.mImg_style3); Glide.with(context).load(list.get(i).getmImg1()).into(holder3.mImg1_style3); break; } return view; } private class ViewHolder_style1{ private ImageView mImg_style1; } private class ViewHolder_style2{ private ImageView mImg_style2; private TextView mTv_style2; } private class ViewHolder_style3{ private ImageView mImg_style3; private ImageView mImg1_style3; }}
4.在MainActivity布局文件里写上listview控件,然后找找id,设置适配器就完工了
package wz.listview_morestyle;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView mLv; private List<Info> list=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initList(); initView(); } private void initList() { for (int i=0;i<100;i++){ Info info=new Info("http://p3.so.qhmsg.com/sdr/512_768_/t01bf40c3e3d686a7b8.jpg", "http://p4.so.qhmsg.com/sdr/512_768_/t0175936c4daf96cbee.jpg", i+""); list.add(info); } } private void initView() { mLv= (ListView) findViewById(R.id.mLv); mLv.setAdapter(new MyAdapter(list,MainActivity.this)); }}
附一张效果图
1 0
- ListView的多布局显示
- ListView的多布局显示
- ListView显示多个的布局
- listview显示多布局的时候遇到的问题
- ListView的多布局
- ListView的多布局
- ListView的多布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- Listview中显示不同的视图布局
- listview中显示不同的视图布局
- Listview中显示不同的视图布局
- ListView的多种布局显示(三)
- 文章标题
- tomcat 启动异常
- 4种常用压缩格式在Hadoop中的应用
- 深入理解Java(二):注解(Annotation)自定义注解入门
- cxf框架Demo2(web项目中创建类的cxf服务)
- ListView的多布局显示
- 数据库部分2
- oj-15-G-将字符串插入到指定位置
- Linux驱动开发(一)——驱动开发基础
- RocketMQ broker 注册 IP 问题
- windows和linux安装matplotlib教程
- Android 如何优雅的打印日志
- List<Map<String, Object>>保存的是引用数据类型的地址
- redis 启动服务端和客户端