自定义ListView的Adapter

匿名 (未验证) 提交于 2019-12-02 23:59:01

一、自定义MyAdapter

public class MyAdapter extends BaseAdapter {      //Adapter的作用相当于是从数据到行布局的映射。这就需要传入需要显示的List数据     List<Map<String, Object>> list;     //反射器     LayoutInflater inflater;       //初始化反射器     public MyAdapter(Context context) {         this.inflater = LayoutInflater.from(context);     }      //通过此方法初始化List     public void setList(List<Map<String, Object>> list) {         this.list = list;     }      //如果返回默认的0,不管你传入什么List,全部都不显示     //返回list.size();就刚好显示list长度对应的条数。     @Override     public int getCount() {         return list.size();     }      //因为使用的是List,这里就是设置了如何从List的下标如何得到List中的数据     @Override     public Object getItem(int position) {         return list.get(position);     }      //当前这一项的id是多少?List每一项的id就是下标position     @Override     public long getItemId(int position) {         return position;     }      //页面渲染时时一行一行的渲染,从position 0开始。如果这里给他返回空,页面就什么也不显示。     @Override     public View getView(int position, View convertView, ViewGroup parent) {         //反射器的作用就在这里,把一个xml的文本文件反射为一个View对象。         //这里是两个参数方法,还有其他参数类型的方法         //第一个参数就是传入对应的行布局的id         //第二个参数应该传入父容器.实际使用时,可以不传也能正常运行         View view = inflater.inflate(R.layout.item, null);          //findViewById这个方法以前是直接使用的,前面没有加对象名。其实默认的是this.findViewById         //当前,view已经通过反射成为了此行布局。可以通过它来得到下级的控件         ImageView logo = view.findViewById(R.id.logo);         TextView title = view.findViewById(R.id.title);         TextView version = view.findViewById(R.id.version);         TextView size = view.findViewById(R.id.size);          //针对当前position将list的数据传给view         Map map = list.get(position);         logo.setImageResource((Integer) map.get("logo"));         title.setText((String) map.get("title"));         version.setText((String) map.get("version"));         size.setText((String) map.get("size"));          return view;     } }

二、在MainActivity中使用

        MyAdapter adapter = new MyAdapter(this);         adapter.setList(list);         lv.setAdapter(adapter);

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!