1、新建一个Layout 里边只有ListView
2、写一个Activity,此活动中分三部分(setContentView里写第一步的layout;初始化数据;将数据加到里边)
public class Coashlist extends Activity { private List<Coach> coachList=new ArrayList<>();//此为数据 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_coashlist);//加载List AutoUtils.auto(this); initCoach();//初始化数据 CoachAdapter coachAdapter=new CoachAdapter(Coashlist.this,R.layout.coach_adapter,coachList); ListView listView=(ListView)findViewById(R.id.coach_list); listView.setAdapter(coachAdapter); } private void initCoach(){ for(int i=0;i<10;i++){ Coach coachWang=new Coach("王大锤",R.drawable.up_red); coachList.add(coachWang); } } }
3、新建一个Coach类,里边有各个属性
4、新建一个layout,用于展示ListView的子项
5、新建一个Adapter类继承Adapter
public class CoachAdapter extends ArrayAdapter<Coach> { private int resourceId;//教练对应的资源ID public CoachAdapter( Context context, int resource, List<Coach> objects) { super(context, resource, objects); resourceId=resource; } @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { Coach coach=getItem(position);//实例化教练类 View view; ViewHolder viewHolder; if(convertView==null){//如果是第一次初始化,用ViewHolder初始化,并存储 view=LayoutInflater.from(getContext()).inflate(resourceId,parent,false); viewHolder=new ViewHolder(); viewHolder.coachImage=(ImageView)view.findViewById(R.id.coach_pic); viewHolder.coachTextView=(TextView)view.findViewById(R.id.coach_name); view.setTag(viewHolder); }else {//下一次进入时直接读取 view=convertView; viewHolder=(ViewHolder)view.getTag(); } viewHolder.coachImage.setImageResource(coach.getImageId());//用get方法实例 viewHolder.coachTextView.setText(coach.getName()); return view; } class ViewHolder{ ImageView coachImage; TextView coachTextView; } }