博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
专门用来显示大量数据的视图:AdapterView(1)
阅读量:6987 次
发布时间:2019-06-27

本文共 7071 字,大约阅读时间需要 23 分钟。

  AdapterView是一种用来展示大量数据的视图对象,AdapterView的内容一般是包含相同格式资源的控件,查阅Android文档知类的定义:

  从上可知AdapterView直接继承ViewGroup,间接继承View,因此它是一个系统组件,使用它,一般是直接使用它的子类,它的常见子类有ListView、Spinner,GridView和Gallery。

查看AdapterView源码注意到,AdapterView类后面跟着泛型

  

  AdapterView的常用子类介绍:

  1.ListView  视图是一个列表,每一项的布局是一个自定义布局,可以使用系统已定义好的布局,合理的组合数据项的布局,可以展示不同类型的数据。

  2.Spinner  视图是一个下拉列表,每一项的内容只能是字符串数据,类型可以定义为多种类型。

  3.GridView    视图是一个网格,对比ListView来看,ListView是一个多行单列视图,而GridView是一个多行多列视图,它的列数根据实际需求自定义。

  4.Gallery   画廊视图,水平方向滑动,多用于展示图片,是一个可以把子项以中心锁定,水平滚动的列表。已经被ScrollView和ViewPicker取代了。

 

  1.ListView的使用:

  ListView类的定义:

  

  XML中的常用属性:

  android:layout_width;默认一般设置为match_parent或者fill_parent

  android:layout_height:默认一般设置为match_parent或者fill_parent

  android:layout_weight:根据需要来灵活设置android:layout_width和android:layout_height

  android:divider:设置相邻两个水平项之间的分隔条

  android:dividerHeight:设置相邻两个水平项之间的分隔条的高度

  android:entries:为视图绑定数据源,其中数据源必须是以xml文件定义的

  Java文件中常用方法:

  

  

  

  

  

  

  

  

  

  

  

  

  

  示例:

  1.数据源是xml文件定义的

1 
2
3 4
Day21_My_ListView
5
Settings
6
Hello world!
7 8
9
这是ListView的第一条数据项
10
这是ListView的第二条数据项
11
这是ListView的第三条数据项
12
这是ListView的第四条数据项
13
14 15
strings.xml文件
1 
10 11
16 17 18
main_activity.xml文件
1 package com.my.day21_my_listview1; 2  3 import com.my.day21_my_listview1.R; 4  5 import android.os.Bundle; 6 import android.app.Activity; 7  8 public class MainActivity extends Activity { 9 10     @Override11     protected void onCreate(Bundle savedInstanceState) {12         super.onCreate(savedInstanceState);13         setContentView(R.layout.activity_main);14     }15 }
Main_Activity

  2.数据源是动态定义的

1 package com.my.day21_my_listview1; 2  3 import java.util.ArrayList; 4 import java.util.List; 5  6 import com.my.day21_my_listview1.R; 7  8 import android.os.Bundle; 9 import android.widget.ArrayAdapter;10 import android.widget.ListView;11 import android.app.Activity;12 13 public class MainActivity extends Activity {14     private List
datas;15 private ListView listView;16 private ArrayAdapter
adapter;17 18 @Override19 protected void onCreate(Bundle savedInstanceState) {20 super.onCreate(savedInstanceState);21 setContentView(R.layout.activity_main);22 23 datas = new ArrayList
();24 for(int i=1;i<=4;i++){25 datas.add("这是ListView的第"+i+"条数据项");26 }27 listView = (ListView) findViewById(R.id.listView);28 adapter = new ArrayAdapter
(this, android.R.layout.simple_gallery_item, datas);29 listView.setAdapter(adapter);30 }31 }
Main_Activity

  效果图:

 

  2.Spinner的使用:

  Spinner的类定义:

  描述:

  常用方法:

  

  注:Spinner中的数据也可以以两个方式定义,一种是静态的xml定义,另一种是动态的完成数据源的初始化。

  示例:

  效果图:

  

  

1 package com.my.day21_my_spinner; 2  3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.widget.ArrayAdapter; 6 import android.widget.Spinner; 7  8 public class MainActivity extends Activity { 9     private Spinner spinner;10     private String[] datas = {"北京","上海","广州","深圳"};11     private ArrayAdapter
adapter;12 13 @Override14 protected void onCreate(Bundle savedInstanceState) {15 super.onCreate(savedInstanceState);16 setContentView(R.layout.activity_main);17 18 spinner = (Spinner) findViewById(R.id.spinner);19 adapter = new ArrayAdapter
(this, android.R.layout.simple_spinner_item,datas);20 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);21 spinner.setAdapter(adapter);22 }23 24 }
Main_Activity

 

  3.GridView的使用:

  以多行多列的形式显示数据,其中多列是定义的。

  在xml文件中的重要属性:

  

  示例:

  效果图:

 

1 
10 11 12
20 21
30 31 32 33
activity_main
1 
2
6 7
14
20 21
列表项布局
1 package com.my.day21_my_gridview2; 2  3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7  8 import android.os.Bundle; 9 import android.app.Activity;10 import android.widget.GridView;11 import android.widget.SimpleAdapter;12 13 public class MainActivity extends Activity {14     private GridView gridView;15 16     @Override17     protected void onCreate(Bundle savedInstanceState) {18         super.onCreate(savedInstanceState);19         setContentView(R.layout.activity_main);20 21         gridView = (GridView) findViewById(R.id.gridView);22 23         int[] images = { R.drawable.sample_0, R.drawable.sample_1,24                 R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,25                 R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };26 27         List
> list = new ArrayList
>();28 29 for (int i = 0; i < images.length; i++) {30 Map
map = new HashMap
();31 map.put("image", images[i]);32 map.put("name", "小狗" + i);33 list.add(map);34 }35 36 SimpleAdapter adapter = new SimpleAdapter(this, list,37 R.layout.item_layout, new String[] { "image", "name" },38 new int[] { R.id.imageView, R.id.textView });39 40 gridView.setAdapter(adapter);41 42 }43 }
Main_Activity

 

  4.Gallery的使用

  Gallery的类定义:

  Gallery官方文档解释:

  示例:

  效果图:左右滑动,切换图片

  

  

1 package com.my.day21_my_gallery; 2  3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7  8  9 import android.os.Bundle;10 import android.widget.Gallery;11 import android.widget.SimpleAdapter;12 import android.app.Activity;13 14 public class MainActivity extends Activity {15     private List
> datas;16 private SimpleAdapter adapter;17 private Gallery gallery;18 private int[] images = { R.drawable.sample_0, R.drawable.sample_1,19 R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,20 R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };21 22 List
> list = new ArrayList
>(); 23 @Override24 protected void onCreate(Bundle savedInstanceState) {25 super.onCreate(savedInstanceState);26 setContentView(R.layout.activity_main);27 28 datas = new ArrayList
>();29 for(int i=0;i
map = new HashMap
();31 map.put("image", images[i]);32 datas.add(map);33 }34 35 gallery = (Gallery) findViewById(R.id.gallery);36 adapter = new SimpleAdapter(this, datas, R.layout.item_layot, new String[]{"image"}, new int[]{R.id.image});37 gallery.setAdapter(adapter);38 }39 }
Main_Activity

 

  总结:综上所述,对于AdapterView这类视图,使用步骤类似,需要根据不同的场景选择合适的展示数据的视图。

 

  未完,待续。

 

转载于:https://www.cnblogs.com/enjoy-coding/p/4802039.html

你可能感兴趣的文章
windows平台升级ORACLE11.2.0.1到11.2.0.4
查看>>
nginx日志分析
查看>>
eureka多注册中心
查看>>
spring 数据源动态切换 与dubbo服务
查看>>
我的友情链接
查看>>
java嵌套类的一个小程序
查看>>
我的友情链接
查看>>
linux系统批量修改root用户密码
查看>>
我的shell×××作
查看>>
天猫超市低调运营 马云尝试自营B2C模式
查看>>
选择Palo Alto 防火墙十大理由
查看>>
Linux下解压,压缩JAR包的简单方法
查看>>
领先盘点2013年办公家具风格潮流趋势
查看>>
分布式事务:两阶段提交与三阶段提交
查看>>
linux deepin升级内核后,vmware需要gcc编译器
查看>>
针对IE6\7\8\9\10浏览器的CSS hack大全详解
查看>>
网站检测空链、死链工具(Xenu)
查看>>
Java Web学习总结(5)——HttpServletResponse对象详解
查看>>
Myeclipse常用快捷键
查看>>
热备份路由协议(HSRP)与生成树协议(TCP)
查看>>