ListView中有3种适配器比较常用,我在这里只简单写一下其中两个的使用方法:
为了数据方便,我直接使用到了上一章的sqlite数据库中的内容, 如果不清楚可以看一下sqlite数据库.
这个是用来显示在ListView中的每一行数据的视图, 定义成items.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@id/listViewItem1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" android:layout_weight="3" /> <TextView android:id="@id/listViewItem2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2" android:layout_weight="4" /> <TextView android:id="@id/listViewItem3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3" android:layout_weight="3" /> </LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@id/listperson" /> </RelativeLayout>
SimpleAdapter:
private void SimpleAdapterShow() { List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>(); ArrayList<Person> personsArrayList = (ArrayList<Person>) personService.getScrollData(1, 10); for(Person p:personsArrayList) { HashMap<String, Object> hm = new HashMap<String, Object>(); hm.put("item1", p.getPersonid()); hm.put("item2", p.getName()); hm.put("item3", p.getAge()); data.add(hm); } SimpleAdapter personSimpleAdapter = new SimpleAdapter( this, data, R.layout.item, new String[]{"item1","item2","item3"}, new int[]{R.id.listViewItem1,R.id.listViewItem2,R.id.listViewItem3} ); personsListView.setAdapter(personSimpleAdapter); }
PersonBaseAdapter:
package com.xiaoming.sqlite; import java.util.ArrayList; import java.util.zip.Inflater; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.xiaoming.domain.Person; public class PersonBaseAdapter extends BaseAdapter { private Context context; private ArrayList<Person> plist;//要显示的数据 private int resourse;//显示的item.xml private LayoutInflater inflater;//用于缓存在界面外的数据 public PersonBaseAdapter(Context context,ArrayList<Person> plist,int resourse) { this.context = context; this.plist = plist; this.resourse= resourse; this.inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return plist.size(); } @Override public Object getItem(int position) { return plist.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if( convertView == null) { convertView = inflater.inflate(resourse, null); } TextView item1 =(TextView) convertView.findViewById(R.id.listViewItem1); TextView item2 =(TextView) convertView.findViewById(R.id.listViewItem2); TextView item3 =(TextView) convertView.findViewById(R.id.listViewItem3); Person p = plist.get(position); item1.setText(p.getPersonid()+""); item2.setText(p.getName()); item3.setText(p.getAge()+""); return convertView; } }
private void BaseAdapterShow() { ArrayList<Person> personsArrayList = (ArrayList<Person>) personService.getScrollData(1, 10); PersonBaseAdapter adapter = new PersonBaseAdapter(this, personsArrayList, R.layout.item); personsListView.setAdapter(adapter); }