AdapterView组件是一组重要的组件。AdapterView本身是一个抽象基类,其派生的子类在用法上非常相似。AdapterView派生的三个子类:AdsListView、AdsSpinner和AdapterViewAnimator仍然是抽象的,实际应用中需要它们的子类。
目录
概述介绍AdapterView的编程方式adapterview使用myadapater。javamainactivity.javamyadapater.javamainactivity.java。
概述
AdapterView是Android应用程序开发中一个常见且非常重要的组件。我们常见的以列表形式显示信息的组件是AdapterView的一个子类,叫做Listview;我们经常在网格模式下浏览图片缩略图的组件也是AdapterView的一个子类,叫做GridView以下以下拉列表形式显示可选项目的组件也是AdapterView的子类,称为Spinner;诸如此类。它们都是AdapterView的子类。
介绍AdapterView的编程模式
使用Android的ListView组件,以列表方式显示Android系统中所有已安装的程序信息。ListView,顾名思义,就是把信息以列表的形式展现给用户。就像手机设置中的列表一样,它包含所有应用程序的图标、应用程序名称(类似于下图)和门户活动的类名。当显示的内容超出物理屏幕的可用区域时,也可以滚动,就像我们上一期讲的ScrollView的效果一样。
如下图所示:黄色大框的部分是ListView,深蓝色小框包围的部分是列表中的列表项。因此,为了使用ListView在程序中显示信息,必须做一些工作。
(1)在界面布局中包含ListView组件。
(2)布局列表中显示的列表项
(3)设计一个实现Adapter接口的类,用来为ListView组件提供要显示的数据。
Adapter
刚才提到的列表组件(ListView)、网格组件(GridView)、下拉列表组件(Spinner)都是Adapter的子类。这些组件只负责显示数据,要显示的数据必须通过一个叫做Adapter的接口来管理。使用ListView显示数据,例如,AdapterView和适配器接口的关系如下:
适配器的常用方法及其含义:
方法名称含义int getCount()返回数据集中要显示的数据总数Object getItem(int position)返回数据集中指定位置的数据对象long getItemId(int position)返回数据集中指定位置的数据的IDView getView(int position),
视图convertView,
视图组父级)
将指定位置的数据构建到可以在AdapterView中显示的组件中,并将其返回给AdapterView进行显示。
ListView使用
activity_main.xml
?xml版本='1.0 '编码='utf-8 '?
relative layout xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
xmlns:app=' http://schemas . Android . com/apk/RES-auto '
xmlns:tools=' http://schemas . Android . com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
工具:上下文='。'主要活动'
android:stretchColumns='2 '
列表视图
android:id='@ id/lv1 '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '/
/RelativeLayout
选择新建布局资源文件创建。
item.xml
?xml版本='1.0 '编码='utf-8 '?
relative layout xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
xmlns:app=' http://schemas . Android . com/apk/RES-auto '
xmlns:tools=' http://schemas . Android . com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
工具:上下文='。'主要活动'
android:stretchColumns='2 '
列表视图
android:id='@ id/lv1 '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '/
/RelativeLayout
myAdapater.java
包com . example . demo 03 _ 22;
导入Android . content . context;
导入Android . view . layoutinflater;
导入Android . view . view;
导入Android . view . view group;
导入Android . widget . base adapter;
导入Android . widget . textview;
公共类我的助手扩展基本适配器{
私有字符串[] books={'Java程序设计,'安卓应用开发,'神谕数据库管理指南,' JavaWeb程序设计','软件工程之系统工程师之路'};
布局充气机;
int id _ item
公共我的适配器(上下文Context,int id_item){
this.id _ item=id _ item
inflater=(LayoutInflater)上下文。getsystem服务(上下文.LAYOUT _ INFLATER _ SERVICE);
}
@覆盖
public int getCount() {
返回书籍.长度
}
@覆盖
公共对象getItem(int i) {
还书[I];
}
@覆盖
public long getItemId(int i) {
返回我;
}
@覆盖
公共视图getView(int i,View view,ViewGroup viewGroup) {
文本视图电视;
TV=(TextView)充气机。inflate(id _ item,viewGroup,false);
电视。settext(books[I]);
退电视;
}
}
MainActivity.java
包com。举例。演示03 _ 22;
导入安卓克斯。app compat。app。app compat活动;
导入安卓。OS。捆绑;
导入安卓。小部件。列表视图;
公共类主要活动扩展AppCompatActivity {
@覆盖
受保护的void onCreate(Bundle saved instancestate){
超级棒。oncreate(savedInstanceState);
setContentView(r . layout。活动_主);
ListView LV=(ListView)这个。findviewbyid(r . id。lv1);
我的适配器我的适配器=新的我的适配器(这,r .布局。项);
吕。设置适配器(我的适配器);
}
}
测试结果:
改进:添加图片
activity_main.xml
?可扩展标记语言版本='1.0 '编码='utf-8 '?
相对布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
xmlns:app=' http://模式。安卓。' com/apk/RES-auto '
xmlns:tools=' http://模式。安卓。' com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
工具:上下文='。'主要活动'
android:stretchColumns='2 '
列表视图
android:id='@ id/lv1 '
Android:layout _ width=' fill _ parent '
Android:layout _ height=' wrap _ content '/
/RelativeLayout
item.xml
?可扩展标记语言版本='1.0 '编码='utf-8 '?
线性布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:id='@ id/id_booknames '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
安卓:方向='水平'
图像视图
android:id='@ id/book_phone '
android:layout_width='80dp '
android:layout_height='80dp '
/
文本视图
android:id='@ id/book_name '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
安卓:重力='居中_垂直'
/
/线性布局
myAdapater.java
包com。举例。演示03 _ 22;
导入安卓。注释。抑制掉毛;
导入安卓。内容。语境;
导入安卓。查看。layoutinflater
导入安卓。查看。查看;
导入安卓。查看。查看组;
导入安卓。小部件。基本适配器;
导入安卓。小部件。imageview
导入安卓。小部件。线性布局;
导入安卓。小部件。textview
公共类我的助手扩展基本适配器{
私人图书项目[]books={新图书项目('陈某人R.drawable.dog),
新的BookItem('周某人R.drawable.dog),
新的BookItem('钟某人R.drawable.dog),
新的BookItem('林某人R.drawable.dog),
新的BookItem('涛某人可绘制的。狗)};
布局充气机;
int id _ item
公共我的适配器(上下文Context,int id_item){
this.id _ item=id _ item
inflater=(LayoutInflater)上下文。getsystem服务(上下文.LAYOUT _ INFLATER _ SERVICE);
}
@覆盖
public int getCount() {
返回书籍.长度
}
@覆盖
公共对象getItem(int position) {
还书[位置];
}
@覆盖
public long getItemId(int position){
返回位置;
}
@ suppress lint('视图保持器')@ Override
公共视图getView(int position,View view,ViewGroup parent) {
线性布局LL=(线性布局)充气机。inflate(id _ item,parent,false)
;
ImageView iv=(ImageView)ll。findviewbyid(r . id。book _ phone);
四. setImageResource(书籍[位置]。照片);
文本视图电视;
TV=(TextView)ll。findviewbyid(r . id。book _ name);
tv.setText(书籍[位置])。姓名);
返回LL;
}
/**
* 定义一个图片类
*/
私有类BookItem{
字符串名称;
(同Internationalorganizations)国际组织照片;
public BookItem(String name,int photo){
this.name=name
this.photo=照片
}
}
}
MainActivity.java
包com。举例。演示03 _ 22;
导入安卓克斯。app compat。app。app compat活动;
导入安卓。OS。捆绑;
导入安卓。查看。查看;
导入安卓。小部件。适配器视图;
导入安卓。小部件。列表视图;
导入安卓。小部件。textview
导入安卓。小部件。敬酒;
公共类主要活动扩展AppCompatActivity实现适配器视图.OnItemClickListener {
@覆盖
受保护的void onCreate(Bundle saved instancestate){
超级棒。oncreate(savedInstanceState);
setContentView(r . layout。活动_主);
ListView LV=(ListView)这个。findviewbyid(r . id。lv1);
我的适配器我的适配器=新的我的适配器(这,r .布局。项);
吕。设置适配器(我的适配器);
lv.setOnItemClickListener(这个);
}
@覆盖
public void onItemClick(适配器视图?父项,视图视图,整数位置,长id) {
TextView TextView=(TextView)视图。findviewbyid(r . id。book _ name);
String name=(String)textview。gettext();
字符串文本='确定选择'名称'今晚打火锅吗;
Toast.makeText(this,Text,Toast .长度_长)。show();
}
}
到此这篇关于机器人超详细讲解组件适配器视图的使用的文章就介绍到这了,更多相关机器人适配器视图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。