自定义BaseAdapter

来源:互联网 发布:淘宝儿童食品代理 编辑:程序博客网 时间:2024/05/22 15:10

写入自定义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;}@Overridepublic int getCount() {// TODO Auto-generated method stubif (mValues != null) {return mValues.size();}return 0;}@Overridepublic T getItem(int position) {// TODO Auto-generated method stubif (position > getCount() - 1 || mValues == null) {return null;}return mValues.get(position);}@Overridepublic long getItemId(int potion) {// TODO Auto-generated method stubreturn potion;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubreturn 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}@Overrideprotected View getItemView(View convertView, int position) {// TODO Auto-generated method stubViewHolder 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>

显示效果如图:


0 0