android之通过BaseAdapter自定义适配器的使用
来源:互联网 发布:网络教育报名流程 编辑:程序博客网 时间:2024/05/16 03:41
通过BaseAdapter创建自定义适配器。在所有的适配器中,通过BaseAdapter定义的适配器非常好用,可以自定义ListView每行布局的样式,使用非常的广泛,是开发过程中必不可少的。
下面看一个效果图:
接下来一起来实现聊天列表:
1.主布局代码:
<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="com.example.baseadapterdemo.MainActivity" > <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="match_parent" android:layout_height="50dp" android:background="#fc424c" android:padding="3dp" android:paddingLeft="5dp" android:paddingRight="5dp" > <TextView android:id="@+id/text2" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="列表" android:textColor="#fff" android:textSize="25sp" /> </RelativeLayout> <ListView android:id="@+id/main_listView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/relativeLayout" android:divider="#f00" ></ListView></RelativeLayout>
2.建立一个xml布局,是listView每行的布局:
<?xml version="1.0" encoding="utf-8"?><!--行布局文件--><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:padding="4dp" android:orientation="vertical" > <ImageView android:padding="3dp" android:id="@+id/item_img" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentLeft="true" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/item_time" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:gravity="center" android:text="时间" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_toLeftOf="@id/item_time" android:layout_toRightOf="@id/item_img" android:layout_alignParentTop="true" android:orientation="vertical" > <TextView android:id="@+id/item_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:textSize="20sp" android:text="张三" /> <TextView android:textSize="14sp" android:id="@+id/item_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:text="在做什么呢?" /> </LinearLayout></RelativeLayout>
3.创建一个实体类,用于封装数据:
每行布局中包括一个图片、姓名、聊天内容、时间,所以要将这几个数据进行封装
package com.example.vo;/** * 实体类 * 将行布局的内容进行封装 * @author Dell * */public class ListVO {//图片private int mImg;//姓名private String mName;//内容private String mContent;//时间private String mTime;//无参public ListVO() {super();}//有参public ListVO(int mImg, String mName, String mContent, String mTime) {super();this.mImg = mImg;this.mName = mName;this.mContent = mContent;this.mTime = mTime;}//setter,getterpublic int getmImg() {return mImg;}public void setmImg(int mImg) {this.mImg = mImg;}public String getmName() {return mName;}public void setmName(String mName) {this.mName = mName;}public String getmContent() {return mContent;}public void setmContent(String mContent) {this.mContent = mContent;}public String getmTime() {return mTime;}public void setmTime(String mTime) {this.mTime = mTime;}}
a.定义2个参数(context,和List<实体类>),通过构造方法进行赋值.
b.重写4个方法。
①getCount()方法,返回动态数组中有多少数据。
②getView()方法,,通过LayoutInflater对象绑定行布局文件,创建出一个View对象;通过View对象findViewByID()获得行布局控件,设置文本与图片; 返回View对象。
5.主类
package com.example.adapter;/** * 自定义适配器。 */import java.util.List;import com.example.baseadapterdemo.R;import com.example.vo.ListVO;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class MyBaseAdapter extends BaseAdapter{//定义两个参数,一个是Context对象,一个是ListVO实体类型动态数组private Context mContext;private List<ListVO> mList;//有参构造public MyBaseAdapter(Context mContext, List<ListVO> mList) {super();this.mContext = mContext;this.mList = mList;}//总行数@Overridepublic int getCount() {return mList.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}//布局@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = null;if (convertView == null) {view = LayoutInflater.from(mContext).inflate(R.layout.item_main, null);}else {view = convertView;}//绑定布局ImageView img = (ImageView) view.findViewById(R.id.item_img);TextView name = (TextView) view.findViewById(R.id.item_name);TextView content = (TextView) view.findViewById(R.id.item_content);TextView time = (TextView) view.findViewById(R.id.item_time);//设置内容img.setImageResource(mList.get(position).getmImg());name.setText(mList.get(position).getmName());content.setText(mList.get(position).getmContent());time.setText(mList.get(position).getmTime());return view;}}
5.主类
a.声明适配器控件并绑定ID;
b.声明自定义适配器并实例化;
c.添加数据;
d.绑定适配器。
package com.example.baseadapterdemo;import java.util.ArrayList;import java.util.List;import com.example.adapter.MyBaseAdapter;import com.example.vo.ListVO;/** * 主类 */import android.app.Activity;import android.os.Bundle;import android.view.Window;import android.widget.ListView;public class MainActivity extends Activity {//适配器控件ListViewprivate ListView mListView;//适配器private MyBaseAdapter mAdapter;//动态数组private List<ListVO> mList = new ArrayList<ListVO>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);bindID();//添加数据addData();//实例化适配器mAdapter = new MyBaseAdapter(MainActivity.this, mList);//绑定适配器mListView.setAdapter(mAdapter);}private void addData() {//创建对象ListVO v1 = new ListVO(R.drawable.a1, "张三", "最近在做什么事情呢", "11:11");ListVO v2 = new ListVO(R.drawable.a2, "李四", "王五说她不爱我了", "12:21");ListVO v3 = new ListVO(R.drawable.a3, "王五", "我抛弃了他", "13:13");ListVO v4 = new ListVO(R.drawable.a4, "赵六", "哈哈哈", "14:41");ListVO v5 = new ListVO(R.drawable.a5, "小明", "适配器好简单", "16:06");ListVO v6 = new ListVO(R.drawable.a6, "小刚", "6666666666", "18:11");ListVO v7 = new ListVO(R.drawable.a7, "李华", "英语作文被我包了", "18:51");//添加到数组mList.add(v1);mList.add(v2);mList.add(v3);mList.add(v4);mList.add(v5);mList.add(v6);mList.add(v7);//置为空v1 = null;v2 = null;v3 = null;v4 = null;v5 = null;v6 = null;v7 = null;}//绑定idprivate void bindID() {mListView = (ListView) findViewById(R.id.main_listView);}}
这样就完成了。
文件打包:http://download.csdn.net/detail/qq_26239671/9715728
1 0
- android之通过BaseAdapter自定义适配器的使用
- Android自定义适配器BaseAdapter
- android 自定义适配器BaseAdapter
- Android自定义适配器,BaseAdapter的使用方法
- 学会使用listview的自定义baseadapter适配器
- BaseAdapter 自定义适配器的使用以及优化
- Android之BaseAdapter适配器使用技巧
- Android之BaseAdapter适配器使用技巧
- Android适配器之BaseAdapter
- Android适配器之BaseAdapter
- Android适配器之BaseAdapter
- Android之自定义实现BaseAdapter(通用适配器一)
- Android之自定义实现BaseAdapter(通用适配器二)
- Android之自定义实现BaseAdapter(通用适配器三)
- Android之自定义实现BaseAdapter(通用适配器四)
- Android学习之适配器BaseAdapter
- android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法
- android-继承BaseAdapter自定义适配器,getView执行多次的解决方法
- Python调用命令行的几种方法
- JZOJ4923. 【NOIP2017提高组模拟12.17】巧克力狂欢
- 浅谈面试之HashMap的工作原理
- 简单的图形验证码
- 数据库 权限设计 角色 用户组
- android之通过BaseAdapter自定义适配器的使用
- apache反向代理 80端口映射到tomcat的8080端口
- 透视学的应用(五)
- Android Fragment:一些你不可不知的注意事项
- Tomcat的性能与最大并发量(1000)
- Python中lambda表达式的应用
- 第五章
- golang执行命令 exec.Command
- Android最全开发资源