写入自定义BaseAdapter
<span style="font-size:12px;">import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public abstract class BaseListAdapter<T> extends BaseAdapter{
protected Context mContext;
protected List<T> mValues;
protected LayoutInflater mInflater;
public BaseListAdapter(Context mContext, List<T> mValues) {
super();
this.mContext = mContext;
this.mValues = mValues;
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public Context getContext() {
return mContext;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (mValues != null) {
return mValues.size();
}
return 0;
}
@Override
public T getItem(int position) {
// TODO Auto-generated method stub
if (position > getCount() - 1 || mValues == null) {
return null;
}
return mValues.get(position);
}
@Override
public long getItemId(int potion) {
// TODO Auto-generated method stub
return potion;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return getItemView(convertView, position);
}
protected abstract View getItemView(View convertView, int position);
public void update(List<T> values) {
mValues = values;
notifyDataSetInvalidated();
notifyDataSetChanged();
}
}</span>
两个布局如下:
activity_main.xml布局
<span style="font-size:12px;"><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"
tools:context="${relativePackage}.${activityClass}" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout></span>
main.xml布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
>
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="姓名:" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/tv1"
android:text="" />
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tv1"
android:text="年龄:" />
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tv2"
android:layout_alignBottom="@+id/tv2"
android:layout_toRightOf="@+id/tv2"
android:text="" />
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tv2"
android:text="性别:" />
<TextView
android:id="@+id/tv_sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tv3"
android:layout_alignBottom="@+id/tv3"
android:layout_alignLeft="@+id/tv_age"
android:text="" />
</RelativeLayout>
主要内容MainActivity如下:
<span style="font-size:12px;">import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private MainAdapter adapter;
private List<MainEntity> list ;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView1);
list = new ArrayList<MainEntity>();
MainEntity mainEntity =new MainEntity();
mainEntity.setName("赵三");
mainEntity.setSex("男");
mainEntity.setAge("25");
list.add(mainEntity);
MainEntity mainEntity1 =new MainEntity();
mainEntity1.setName("张平");
mainEntity1.setSex("男");
mainEntity1.setAge("27");
list.add(mainEntity1);
MainEntity mainEntity2 =new MainEntity();
mainEntity2.setName("王红");
mainEntity2.setSex("女");
mainEntity2.setAge("20");
list.add(mainEntity2);
adapter = new MainAdapter(MainActivity.this, list);
listView.setAdapter(adapter);
}
private class MainAdapter extends BaseListAdapter<MainEntity> {
public MainAdapter(Context mContext, List<MainEntity> mValues) {
super(mContext, mValues);
// TODO Auto-generated constructor stub
}
@Override
protected View getItemView(View convertView, int position) {
// TODO Auto-generated method stub
ViewHolder viewHolder =null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.main, null);
viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);
viewHolder.tv_age = (TextView) convertView.findViewById(R.id.tv_age);
viewHolder.tv_sex = (TextView) convertView.findViewById(R.id.tv_sex);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
MainEntity entity = getItem(position);
viewHolder.tv_name.setText(entity.name);
viewHolder.tv_sex.setText(entity.sex);
viewHolder.tv_age.setText(entity.age);
return convertView;
}
class ViewHolder{
TextView tv_name;
TextView tv_age;
TextView tv_sex;
}
}
}</span>
显示效果如图: