学会使用listview的自定义baseadapter适配器

来源:互联网 发布:西安信利软件 编辑:程序博客网 时间:2024/05/02 00:19

对于初学者来说,接触到listview的时候,通常使用适配器都是简单的ArrayAdapter适配器,最多就使用simpleAdapter 这两个适配器,但对于自定义Adapter的时候,我们通常都会自己写了一个类继承baseadapter,那么了解baseadapter

android.widget.BaseAdapter

BaseAdapter的四个方法:

    /*        *显示视图        */        @Override        public View getView(int position, View convertView, ViewGroup parent) {            return null;        }        /*        *获取第几个条数据的ID        */        @Override        public long getItemId(int position) {            return 0;        }        /*        *获取第几条数据        */        @Override        public Object getItem(int position) {            return null;        }        /*        *获取数据 的数量        */        @Override        public int getCount() {            return 0;        }
下面就列举一个listview使用baseadapter的例子1,先在activity_mian.xml写一个listview布局

<?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="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:text="TextView" /></LinearLayout>

我就放了一个textview,如果你想复杂点,可以再继续布局多几个控件
3,那么布局文件有了,还差一个适配器,现在新建一个类MyAdapter继承BaseAdapter

public class MyAdapter extends BaseAdapter{private List<String>mlist;  //接受MainActivity传过来的数据private Context mContext;private LayoutInflater mLayout;public MusicAdapter( List<String>list,Context context){this.mList=list;this.mContext=context;this.mLayout=LayoutInflater.from(context);}@Overridepublic int getCount() {    return mList.size();}@Overridepublic Object getItem(int position) {    return mList.get(position);}@Overridepublic long getItemId(int position) {    return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {    ViewHolder  mViewHolder;    if(convertView==null){    mViewHolder=new ViewHolder();    convertView=mLayout.inflate(R.layout.list_item, null);    mViewHolder.text=(TextView) convertView.findViewById(R.id.textView1);    convertView.setTag(mViewHolder);}else{    mViewHolder=(ViewHolder) convertView.getTag();}       mViewHolder.text.setText(mList.get(position));    return convertView;}class ViewHolder{    private TextView text;}}

差在MainActivity.java文件呈现出自定义的listview了

public class MainActivity extends Activity{            private ListView mListView;            private List<String> mlist;            private MyAdapter mAdapter;            @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContextView(R.layout.activity_main);            setListData();            initView();    }    private void setListData(){        mList=new ArrayList<String>();        mList.add("星期一");        mList.add("星期二");        mList.add("星期三");        mList.add("星期四");        mList.add("星期五");        mList.add("星期六");        mList.add("星期日");    }    private void initView() {        mListView=(LIstView)findViewById(R,id.listview);        mAdapter=new MyAdapter(mList,MainActivity.this);        mListView.setAdapter(mAdapter);    }}
0 0
原创粉丝点击