使用BaseAdaper时,我们常写一个类来继承它。因为BaseAdapter是一个抽象类,所以继承它必修实现它的方法。下面用一个小例子来学习BaseAdapter适配器实现ListView的多行显示效果。

例子的目录结构:



com.person.adapter包:

public class MyAdapter extends BaseAdapter {LayoutInflater mInflater;List<PersonInfo> list;public MyAdapter(Context context, List<PersonInfo> list) {super();this.mInflater = LayoutInflater.from(context);this.list = list;}// 内部类优化作用public final class ViewHolder {public TextView id;public TextView name;public TextView address;public ImageView img;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();convertView = mInflater.inflate(R.layout.list_item, null);viewHolder.id = (TextView) convertView.findViewById(R.id.tv_id);viewHolder.name = (TextView) convertView.findViewById(R.id.tv_name);viewHolder.address = (TextView) convertView.findViewById(R.id.tv_address);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.id.setText(list.get(position).getId());viewHolder.name.setText(list.get(position).getName());viewHolder.address.setText(list.get(position).getAddress());return convertView;}}

com.person.activity包:

public class MianActivity extends Activity {private ListView listView;private MyAdapter adapter;List<PersonInfo> list = new ArrayList<PersonInfo>();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);listView = (ListView) findViewById(R.id.lv);SAXParserFactory factory = SAXParserFactory.newInstance();try {XMLReader reader = factory.newSAXParser().getXMLReader();XMLParse xmlParse = new XMLParse(list);reader.setContentHandler(xmlParse);InputStream is = getResources().openRawResource(R.raw.person);reader.parse(new InputSource(is));// 测试for (Iterator iterator = list.iterator(); iterator.hasNext();) {PersonInfo personInfo = (PersonInfo) iterator.next();System.out.println(personInfo.getId());System.out.println(personInfo.getName());System.out.println(personInfo.getAddress());}} catch (Exception e) {e.printStackTrace();}adapter = new MyAdapter(this, list);listView.setAdapter(adapter);}}

com.person.model包:

public class PersonInfo {private String  id;private String name;private String address;public PersonInfo(){super();}public void setId(String id){this.id = id;}public String getId(){return id;}public  void setName(String name){this.name = name;}public String getName(){return name;}public  void setAddress(String address){this.address = address;}public String getAddress(){return address;}}
com.person.parse包:
public class XMLParse extends DefaultHandler {private String tag;List<PersonInfo> list;;PersonInfo personInfo;// 构造方法实例化listpublic XMLParse(List<PersonInfo> list) {super();this.list = list;}@Overridepublic void startDocument() throws SAXException {super.startDocument();}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if (localName.equals("person")) {personInfo = new PersonInfo();}tag = localName;super.startElement(uri, localName, qName, attributes);}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {String str = new String(ch, start, length);if (tag.equals("id")) {personInfo.setId(str);} else if (tag.equals("name")) {personInfo.setName(str);} else if (tag.equals("address")) {personInfo.setAddress(str);}super.characters(ch, start, length);}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {// 此处是pName而不再是localNameif (qName.equals("person")) {list.add(personInfo);}tag = "";super.endElement(uri, localName, qName);}@Overridepublic void endDocument() throws SAXException {super.endDocument();}}
效果图:




更多相关文章

  1. android音乐播放器例子及其源码分析
  2. Android之垂直显示TextView
  3. [Android(安卓)Pro] Android开发实践:为什么要继承onMeasure()
  4. Android中的内部类引起的内存泄露
  5. Android(安卓)Studio 单元测试
  6. Android(安卓)Service 解析(1)
  7. android避免内存泄露
  8. 关于Android(JAVA)实例化接口假象的讨论
  9. Android(安卓)ApiDemos示例解析(20):App->Alarm->Alarm Service

随机推荐

  1. csdn账号密码登录剖析(模拟登录)
  2. 爬虫实现csdn文章一键(批量)更换阅读类型
  3. 数据结构与算法—绪论
  4. 数据结构于算法—线性表详解(顺序表、链
  5. 哪吒票房逼近30亿,从豆瓣短评简单分析人们
  6. 一文多图搞懂数据结构的双链表!
  7. 数据结构与算法—栈详解(看完面试考试再
  8. 定义一个接口和抽象类
  9. 小白跟学系列之手把手搭建NLP经典模型(含
  10. NIPS2020 | 基于核的渐进式蒸馏的加法神