创建一个Android项目,:使用ListView完成多条目加载,显示4个视图效果,每四个重复一次。
操作步骤如下:
Ø 创建ListView,模拟生成20条以上的标题数据,图片样式可以写死在布局中
Ø ListView优化
Ø 在baseAdapter中添加多条目加载的方法,设置条目数为4,并且根据position值设置对应条目显示的样式
Ø 在getView方法中根据当前条目返回的样式类型加载指定的布局
1.MainActivity
package com.example.dell.a1511q0117; 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 listView; private List<dataBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.my_list); list = new ArrayList<>(); for (int i = 0; i <20 ; i++) { list.add(new dataBean(R.drawable.a,"考试")); } MyAdapter myAdapter = new MyAdapter(MainActivity.this, list); listView.setAdapter(myAdapter); } }2.布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.dell.a1511q0117.MainActivity"> <ListView android:id="@+id/my_list" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </RelativeLayout>3.DataBean
package com.example.dell.a1511q0117; /** * Created by dell on 2018/1/17. */ public class dataBean { private Integer img; private String name; public dataBean(Integer img, String name) { this.img = img; this.name = name; } public Integer getImg() { return img; } public void setImg(Integer img) { this.img = img; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "dataBean{" + "img=" + img + ", name='" + name + '\'' + '}'; } }4.MyAdapter适配器
package com.example.dell.a1511q0117; 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 java.util.List; /** * Created by dell on 2018/1/17. */ class MyAdapter extends BaseAdapter{ private Context context; private List<dataBean> list; private int YI_ITEM=0; private int ER_ITEM=1; private int SAN_ITEM=2; private int SI_ITEM=3; public MyAdapter(Context context, List<dataBean> list) { this.context=context; this.list=list; } @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 int getViewTypeCount() { return 4; } @Override public int getItemViewType(int position) { if(position%4==0){ return YI_ITEM; }else if(position%4==1){ return ER_ITEM; }else if(position%4==2){ return SAN_ITEM; }else{ return SI_ITEM; } } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type = getItemViewType(i); if(type==YI_ITEM){ ViewHolder holder; if(view==null){ view=View.inflate(context,R.layout.item,null); holder = new ViewHolder(); holder.name=view.findViewById(R.id.text_name); holder.img=view.findViewById(R.id.image_img); view.setTag(holder); }else{ holder= (ViewHolder) view.getTag(); } holder.name.setText(list.get(i).getName()); holder.img.setImageResource(list.get(i).getImg()); return view; }else if(type==ER_ITEM){ ViewHolder2 holder2; if(view==null){ view=View.inflate(context,R.layout.item2,null); holder2 = new ViewHolder2(); holder2.name2=view.findViewById(R.id.text_name2); holder2.img2_01=view.findViewById(R.id.imgae2_img); holder2.img2_02=view.findViewById(R.id.imgae2_img2); view.setTag(holder2); }else{ holder2= (ViewHolder2) view.getTag(); } holder2.name2.setText(list.get(i).getName()); holder2.img2_01.setImageResource(list.get(i).getImg()); holder2.img2_02.setImageResource(list.get(i).getImg()); return view; }else if(type==SAN_ITEM){ ViewHolder3 holder3; if(view==null){ view=View.inflate(context,R.layout.item3,null); holder3 = new ViewHolder3(); holder3.name3=view.findViewById(R.id.text_name3); holder3.img3_01=view.findViewById(R.id.imgae3_img); holder3.img3_02=view.findViewById(R.id.imgae3_img2); holder3.img3_03=view.findViewById(R.id.imgae3_img3); view.setTag(holder3); }else{ holder3= (ViewHolder3) view.getTag(); } holder3.name3.setText(list.get(i).getName()); holder3.img3_01.setImageResource(list.get(i).getImg()); holder3.img3_02.setImageResource(list.get(i).getImg()); holder3.img3_03.setImageResource(list.get(i).getImg()); return view; }else{ ViewHolder4 holder4; if(view==null){ view=View.inflate(context,R.layout.item4,null); holder4 = new ViewHolder4(); holder4.name4=view.findViewById(R.id.text_name4); holder4.img4_01=view.findViewById(R.id.imgae4_img); holder4.img4_02=view.findViewById(R.id.imgae4_img2); holder4.img4_03=view.findViewById(R.id.imgae4_img3); holder4.img4_04=view.findViewById(R.id.imgae4_img4); view.setTag(holder4); }else{ holder4= (ViewHolder4) view.getTag(); } holder4.name4.setText(list.get(i).getName()); holder4.img4_01.setImageResource(list.get(i).getImg()); holder4.img4_02.setImageResource(list.get(i).getImg()); holder4.img4_03.setImageResource(list.get(i).getImg()); holder4.img4_04.setImageResource(list.get(i).getImg()); return view; } } class ViewHolder{ TextView name; ImageView img; } class ViewHolder2{ TextView name2; ImageView img2_01; ImageView img2_02; } class ViewHolder3{ TextView name3; ImageView img3_01; ImageView img3_02; ImageView img3_03; } class ViewHolder4{ TextView name4; ImageView img4_01; ImageView img4_02; ImageView img4_03; ImageView img4_04; } }5.条目布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" android:padding="10dp"> <TextView android:id="@+id/text_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="月考"/> <ImageView android:id="@+id/image_img" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> </LinearLayout><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" android:padding="10dp"> <TextView android:id="@+id/text_name2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="月考"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imgae2_img" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imgae2_img2" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" android:padding="10dp"> <TextView android:id="@+id/text_name3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="月考"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imgae3_img" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imgae3_img2" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imgae3_img3" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" android:padding="10dp"> <TextView android:id="@+id/text_name4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="月考"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imgae4_img" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imgae4_img2" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imgae4_img3" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imgae4_img4" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" android:src="@mipmap/ic_launcher"/> </LinearLayout> </LinearLayout>