Android应用开发基础Android应用开发基础 (9).pdf

上传人:刘静 文档编号:57971747 上传时间:2022-11-06 格式:PDF 页数:22 大小:2.89MB
返回 下载 相关 举报
Android应用开发基础Android应用开发基础 (9).pdf_第1页
第1页 / 共22页
Android应用开发基础Android应用开发基础 (9).pdf_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《Android应用开发基础Android应用开发基础 (9).pdf》由会员分享,可在线阅读,更多相关《Android应用开发基础Android应用开发基础 (9).pdf(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 3.4 适配器技术 本章内容本章内容 第第1节节 布局管理布局管理 第第2节节 基础控件基础控件 第第3节节 中级控件中级控件 第第4节节 适配器技术适配器技术 3.4 3.4 适配器技术适配器技术 知识点预览知识点预览#知识点知识点 重点重点 难点难点 应用应用 说明说明 1 Adapter 熟练掌握Adapter的类结构和实现方法 2 Spinner 熟练掌握Spinner的适配器使用方法 3 ListView 熟练掌握ListView的适配器使用方法 4 自定义Adapter 熟练掌握自定义Adapter的实现方法 5 Adapter优化 熟练掌握自定义Adapter的内存优化实现方法

2、 3.43.4适配器技术适配器技术 Android适配器:ArrayAdapter;SimpleAdapter;自定义Adapter;自定义Adapter ArrayAdapter SimpleAdapter Adapter:数据与组件的桥梁;Spinner;ListView;GridView;ViewPager 对要进行显示的数据进行处理;通过与视图对象绑定将数据显示到视图对象;Adapter类的继承关系 3.4.1 Adapter3.4.1 Adapter Spinner:下拉单选框;Spinner基本属性和方法;3.4.1 Spinner3.4.1 Spinner组件组件 Xml属性名称

3、属性名称 类设置方法 说明说明 androidandroid:promptprompt setPromptsetPrompt 设置标题文字设置标题文字 setAdaptersetAdapter 设置下拉列表的适配器设置下拉列表的适配器 setSelectionsetSelection 设置当前选择项设置当前选择项 setOnItemsetOnItem SelectedListenerSelectedListener 设置监听器设置监听器 Spinner一般使用ArrayAdapter Spinner组件的实现 1 Activity中实现下拉框子项选中事件监听器 public class pub

4、lic class MainActivity extends extends AppCompatActivity implements implements AdapterView.OnItemSelectedListener protected void protected void onCreate(Bundle savedInstanceState)setContentView(R.layout.activity_mainactivity_main);initView();initData();2 定义Spinner变量并初始化 private private TextView mTex

5、tView2mTextView2;private private Spinner mSpinnermSpinner;private void private void initView()mTextView2 mTextView2=(TextView)findViewById(R.id.textView2textView2);mSpinner mSpinner=(Spinner)findViewById(R.id.spinnerspinner);mSpinnermSpinner.setOnItemSelectedListener(thisthis);3.4.1 Spinner3.4.1 Spi

6、nner组件组件 Spinner组件的实现 3 数据的初始化 private private String strWeekstrWeek=星期一星期一,星期二星期二,星期三星期三,星期四星期四,星期五星期五,星期六星期六,星期日星期日;private void private void initData()/初始化ArrayAdapter ArrayAdapter mArrayAdapter=new new ArrayAdapter (thisthis,R.layout.support_simple_spinner_dropdown_itemsupport_simple_spinner_dro

7、pdown_item,strWeekstrWeek);mSpinnermSpinner.setPrompt(请选择日期请选择日期);/设置标题 mSpinnermSpinner.setAdapter(mArrayAdapter);/组件与适配器绑定 mSpinnermSpinner.setSelection(0);/第一行 3.4.1 Spinner3.4.1 Spinner组件组件 4 Activity中实现按钮选中事件监听器 public void public void onItemSelected(AdapterView adapterView,View view,int int i,

8、long long l)String strMsg=String.format(选择了第选择了第%i%i个选项个选项:%s:%s,i+1,strWeekstrWeeki);Toast.makeText(thisthis,strMsg,Toast.LENGTH_LONGLENGTH_LONG).show();ListView:列表控件;ListView基本属性和方法;3.4.2 ListView3.4.2 ListView组件组件 Xml属性名称属性名称 类设置方法 说明说明 androidandroid:dividerdivider setDividersetDivider 设定分割线的图形设

9、定分割线的图形 androidandroid:dividerHeightdividerHeight setDividerHeightsetDividerHeight 设定分隔线的高度设定分隔线的高度 androidandroid:headerheader DividersEnabledDividersEnabled setsetHeaderDividersHeaderDividers EnabledEnabled 是否显示列表开头的分隔线是否显示列表开头的分隔线 androidandroid:footerfooter DividersEnabledDividersEnabled setsetF

10、ooterDividersFooterDividers EnabledEnabled 是否显示列表末尾的分隔线是否显示列表末尾的分隔线 ListView一般使用SimpleAdapter 第一个参数:上下文对象 第二个参数:数据源是含有Map的一个集合 第三个参数:每一个item的布局文件 第四个参数:new String数组,数组的里面的每一项要与第二个参数中的存入map集合的的key值一样,一一对应 第五个参数:new int数组,数组里面的第三个参数中的item里面的控件id。ListView与SimpleAdapter的原理;1 初始化数据源;2 设计子布局 3 初始化适配器 4 组件

11、与适配器绑定 3.4.2 ListView3.4.2 ListView组件组件 ListView组件的实现 1 Activity中实现ListView子项选中事件处理 public class public class MainActivity extends extends AppCompatActivity implements implements AdapterView.OnItemClickListener protected void protected void onCreate(Bundle savedInstanceState)setContentView(R.layout.

12、activity_mainactivity_main);initView();initData();2 定义ListView变量并初始化 private private TextView mTextView2mTextView2;private private ListView mListviewmListview;private void private void initView()mTextView2 mTextView2=(TextView)findViewById(R.id.textView2textView2);mListview mListview=(ListView)findV

13、iewById(R.id.listviewlistview);mListviewmListview.setOnItemClickListener(thisthis);3.4.2 ListView3.4.2 ListView组件组件 ListView组件的实现 3 数据的初始化 private intprivate int iPic iPic=R.drawable.doordoor,R.drawable.liblib,R.drawable.sciencescience,R.drawable.restrest,R.drawable.lakelake,R.drawable.mediummedium,

14、R.drawable.nightnight;private private String strName strName=大门大门,图书馆图书馆,科技楼科技楼,宿舍楼宿舍楼,天鹅湖天鹅湖,体育场体育场,夜景夜景;private private String strContent strContent=美丽大运村美丽大运村,美丽图书馆美丽图书馆,美丽科技楼美丽科技楼,美丽宿舍楼美丽宿舍楼,美丽天鹅湖美丽天鹅湖,美丽体育场美丽体育场,美丽夜景美丽夜景;private private ArrayListMap mArrayListmArrayList;private void private voi

15、d initData()mArrayListmArrayList=new new ArrayList();for for(int int i=0;iiPiciPic.lengthlength;i+)Map map=new new HashMap();map.put(imageimage,iPiciPici);map.put(namename,strNamestrNamei);map.put(contentcontent,strContentstrContenti);mArrayListmArrayList.add(map);3.3.2 ListView3.3.2 ListView组件组件 Li

16、stView组件的实现 3 数据的初始化 private void private void initData()SimpleAdapter mSimpleAdapter=new new SimpleAdapter (thisthis,mArrayListmArrayList,R.layout.list_itemlist_item,new new Stringimageimage,namename,contentcontent,new intnew intR.id.image1image1,R.id.text1text1,R.id.text2text2);mListviewmListview.

17、setAdapter(mSimpleAdapter);3.3.2 ListView3.3.2 ListView组件组件 4 Activity中实现列表选中事件监听器 public void public void onItemClick(AdapterView adapterView,View view,int int i,long long l)String strMsg=String.format(选择了第选择了第%d%d个子选项个子选项:%s:%s,i+1);Toast.makeText(thisthis,strMsg,Toast.LENGTH_LONGLENGTH_LONG).show

18、();BaseAdapter:可扩展的Adapter;必须实现的接口 3.4.3 3.4.3 自定义自定义AdapterAdapter组件组件 public int getCount():适配器中数据个数;public Object getItem(int position):获取数据索引对应的数据项 public Object getItemId(int position):获取数据索引id public View getView(int position,View convertView,ViewGroup parent):获取每一行Item的显示内容。Bean类实现 1 ItemBean

19、类实现数据的聚合 3.4.3 3.4.3 自定义自定义AdapterAdapter 自定义Adapter类实现 2 自定义Adapter类继承BaseAdapter,实现接口方法 3.4.3 3.4.3 自定义自定义AdapterAdapter public class public class MyBaseAdapter extends extends BaseAdapter private private Context mCtxmCtx;private private ArrayList mArrayListmArrayList;public public MyBaseAdapter(C

20、ontext mCtx,ArrayList mArrayList)thisthis.mCtx mCtx=mCtx;thisthis.mArrayList mArrayList=mArrayList;public int public int getCount()return return mArrayListmArrayList.size();public public Object getItem(int int i)return return mArrayListmArrayList.get(i);public long public long getItemId(int int i)re

21、turn return i;自定义Adapter类实现 2 自定义Adapter类继承BaseAdapter,实现接口方法 3.4.3 3.4.3 自定义自定义AdapterAdapter public public View getView(int int i,View view,ViewGroup viewGroup)/将布局文件转化为View对象 View mView=LayoutInflater.from(mCtxmCtx).inflate(R.layout.list_itemlist_item,nullnull);/找到item布局文件中对应的控件 ImageView mImageV

22、iew=(ImageView)mView.findViewById(R.id.image1image1);TextView mNameTextView=(TextView)mView.findViewById(R.id.text1text1);TextView mContentTextView=(TextView)mView.findViewById(R.id.text2text2);CheckBox mChekBox=(CheckBox)mView.findViewById(R.id.checkBoxcheckBox);/获取相应索引的ItemBean对象 ItemBean mItemBea

23、n=mArrayListmArrayList.get(i);/设置控件的对应属性值 mImageView.setImageResource(mItemBean.getiPic();mNameTextView.setText(mItemBean.getStrName();mContentTextView.setText(mItemBean.getStrContent();if if(mItemBean.getbChecked()mChekBox.setChecked(truetrue);return return mView;ListView组件的实现 3 数据的初始化 private intp

24、rivate int iPic iPic=R.drawable.doordoor,R.drawable.liblib,R.drawable.sciencescience,R.drawable.restrest,R.drawable.lakelake,R.drawable.mediummedium,R.drawable.nightnight;private private String strName strName=大门大门,图书馆图书馆,科技楼科技楼,宿舍楼宿舍楼,天鹅湖天鹅湖,体育场体育场,夜景夜景;private private String strContent strContent=

25、美丽大运村美丽大运村,美丽图书馆美丽图书馆,美丽科技楼美丽科技楼,美丽宿舍楼美丽宿舍楼,美丽天鹅湖美丽天鹅湖,美丽体育场美丽体育场,美丽夜景美丽夜景;private private ArrayList mArrayListmArrayList;private void private void initData()mArrayListmArrayList=new new ArrayList();for for(int int i=0;iiPiciPic.lengthlength;i+)ItemBean mItemBean=new new ItemBean();mItemBean.setiPic

26、(iPiciPici);mItemBean.setStrName(strNamestrNamei);mItemBean.setStrContent(strContentstrContenti);mItemBean.setbChecked(truetrue);mArrayListmArrayList.add(mItemBean);3.4.3 3.4.3 自定义自定义AdapterAdapter ListView组件的实现 3 数据的初始化 private void private void initData()MyBaseAdapter myBaseAdapter=new new MyBaseA

27、dapter(thisthis,mArrayListmArrayList);mListviewmListview.setAdapter(myBaseAdapter);3.4.3 3.4.3 自定义自定义AdapterAdapter 4 Activity中实现按钮选中事件监听器 public void public void onItemClick(AdapterView adapterView,View view,int int i,long long l)String strMsg=String.format(选择了第选择了第%d%d个子选项个子选项:%s:%s,i+1);if if(mAr

28、rayListmArrayList.get(i).getbChecked()strMsg+=CheckBoxCheckBox被选中被选中;Toast.makeText(thisthis,strMsg,Toast.LENGTH_LONGLENGTH_LONG).show();ListView性能优化 3.4.4 Adapter3.4.4 Adapter优化优化 Item由XML布局创建View对象,占用内存,IO操作影响性能,需要优化 布局中的子组件每次需要通过findViewById查找,耗时操作,需要优化 View getView(int position,View convertView,

29、ViewGroup parent)Item1Item9Item9Item1Item2Item3Item4Item5Item6Item7Item8ListViewItem1Item2Item3Item4Item5Item6Item7ListViewItem8Item2Item3Item4Item5Item6Item7ListViewItem8Item9ViewHoldermImage1mText1mText2ImageViewImageViewTextViewTextViewTextViewTextViewCheckBoxCheckBoxmCheckBox ViewHolder组件的实现 1 V

30、iewHolder组件-选中子布局后LayoutCreate可以自动生成代码 public static class public static class ViewHolder public public View rootViewrootView;public public ImageView mImage1mImage1;public public TextView mText1mText1;public public TextView mText2mText2;public public CheckBox mCheckBoxmCheckBox;public public ViewHol

31、der(View rootView)thisthis.rootView rootView=rootView;thisthis.mImage1 mImage1=(ImageView)rootView.findViewById(R.id.image1image1);thisthis.mText1 mText1=(TextView)rootView.findViewById(R.id.text1text1);thisthis.mText2 mText2=(TextView)rootView.findViewById(R.id.text2text2);thisthis.mCheckBox mCheck

32、Box=(CheckBox)rootView.findViewById(R.id.checkBoxcheckBox);3.4.4 Adapter3.4.4 Adapter优化优化 ViewHolder组件的实现 2 getView优化 public public View getView(int int i,View view,ViewGroup viewGroup)View mView;ViewHolder mViewHolder;ifif(view=nullnull)/将布局文件转化为View对象 mView=LayoutInflater.from(mCtxmCtx).inflate(R.

33、layout.list_itemlist_item,nullnull);mViewHolder=new new ViewHolder(mView);mView.setTag(mViewHolder);else else mView=view;mViewHolder=(ViewHolder)mView.getTag();/获取相应索引的ItemBean对象 ItemBean mItemBean=mArrayListmArrayList.get(i);mViewHolder.mImage1mImage1.setImageResource(mItemBean.getiPic();mViewHolder.mText1mText1.setText(mItemBean.getStrName();mViewHolder.mText2mText2.setText(mItemBean.getStrContent();if if(mItemBean.getbChecked()mViewHolder.mCheckBoxmCheckBox.setChecked(truetrue);return return mView;3.4.4 Adapter3.4.4 Adapter优化优化

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com