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);
}
BaseAdapter: 使用起来比上麻烦一点,但是很实用.. 我们需要先建立一个类PersonBaseAdapter实现BaseAdapter接口,然后实现
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;
}
}
MainActivity中的调用:
private void BaseAdapterShow()
{
ArrayList<Person> personsArrayList = (ArrayList<Person>) personService.getScrollData(1, 10);
PersonBaseAdapter adapter = new PersonBaseAdapter(this, personsArrayList, R.layout.item);
personsListView.setAdapter(adapter);
}