GridView(网格视图)

1.概述:(用法与ListView相同)

GriedView用于在界面上按照行、列分布的方式来显示多个组件。GriedView和ListView有共同的父类:AbsListView,因此它们有很多相似之处,都是列表项,但唯一的区别是:
GriedView时可以显示多列,ListView只显示一列。所以这样说,ListView是一种特殊的GriedView。
其他相似之处:体现在都需要adapter来传数据,点击事件相同。

2.xml属性:

特殊:
numColums=”” //表示几列,默认1列
stretchMode=”” //设置拉伸模式

3.小知识补充:

获得LayoutInflater的几种方式:
1)LayoutInflater flater = getLayoutInflater();//最常用
2)LayoutInflater flater = LayoutInflater.from(this);
3)LayoutInflater flater = getSystemService(*);//不常用

4.补充:

在ListView的例子基础上,使一点击就出现蒙版:
xml:item中加上蒙版透明色,这里的宽和长度与图片一致。

<ImageView android:id="@+id/image_hint"android:layout_width="100dp"android:layout_height="100dp"android:layout_alignRight="@id/imageView"android:layout_alignBottom="@id/imageView"android:background="#55ff0000"android:visibility="invisible"/>

dapter中加上:

//设置使点击选中时,出现蒙版。if(mCheckedPosition[position]){vh.image_hint.setVisibility(View.VISIBLE);}else{vh.image_hint.setVisibility(View.INVISIBLE);}

效果演示:

AutoCompleteTextView(自动完成文本框)

1.概述:

AutoCompleteTextView是从EditText派生出的,实际上它是编辑框,但多的功能是:可以自动会显示一个下拉菜单,供用户从中选择。

2.xml属性:

completionThreshold=”” //设置用户至少输入几个字符才会显示提示

3.AutoCompleteTextView派生出了一个子类:MultiAutoCompleteTextView,它允许输入多个提示项。

范例:
xml:

<AutoCompleteTextView android:id="@+id/autotext"android:layout_width="match_parent"android:layout_height="wrap_content"/>

java:

public class MainActivity extends Activity {private AutoCompleteTextView mAutotext;private ArrayAdapter<String> adapter;private String[] mList={"beijing_changping","biejing_wuhuan","beijing_gugogn","shanghai_hai","shangjing","tianjin","tianjin_yihe","sd","shandong"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mAutotext=(AutoCompleteTextView) findViewById(R.id.autotext);adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,mList);mAutotext.setAdapter(adapter);}}

结果演示:

Spinner (列表选择框)

1.概述:

Spinner是一个列表选择框,它和Gallery都继承了AbsSpinner,所以只要为其提供Adapter即可。

2.常用xml属性;

entries=”” 使用数组资源设置下拉列表框的列表项目(AbsSpinner中定义的)
popupBackground=”” 设置下拉列表框的背景色
prompt=”” 设置列表选择框的提示信息

范例:
xml:

 <Spinner android:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="wrap_content"/>

java:

public class MainActivity extends Activity {private Spinner mSpinner;private ArrayAdapter<String> adapter;private String[] mList={"beijing_changping","biejing_wuhuan","beijing_gugogn","shanghai_hai","shangjing","tianjin","tianjin_yihe","sd","shandong"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSpinner=(Spinner) findViewById(R.id.spinner);adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,mList);mSpinner.setAdapter(adapter);}
}

Gallery(被抛弃)(画廊视图)

1.概述:

与listview的区别,在于listview时上下滑动,gallery是左右滑动。

2.xml属性:

spacing=”” 左右的距离
unselectedAlpha=”” 传入数值,例0.5 让没有居中的子项透明,数字越小,透明度越高

<Gallery android:id="@+id/gallery"android:layout_width="match_parent"android:layout_height="wrap_content"android:spacing="10dp"android:unselectedAlpha="0.6"/>

3.监听事件:

1)setOnItemClickListener() //和listview用法相同
2)setOnItemSelectedListener() //特有:监听居中的控件
范例:

mGalleryview.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> arg0, View arg1,int position, long arg3) {Toast.makeText(MainActivity.this,list.get(position).getName() ,Toast.LENGTH_SHORT).show();}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {// TODO Auto-generated method stub}});

结果:

ExpandableListView(可展开列表)

1.概述:

ExpandableListView是ListView的子类(ListView属于ViewGroup支下)。它在ListView基础上进行了扩展,把列表项分为几组,每组又可包含多个列表项。
但ExpandableListView的实现需要由ExpandableListAdapter来提供列表项,ExpandableListAdapter是接口。(BaseExpandableListAdapter实现了它,所以只要自定义的适配器来继承BaseExpandableListAdapter即可。)

2.xml属性:

childDivider=”” //指定各组内各子列表项之间的分隔条
childIndicator=”” //显示在子列表旁边的Drawable对象
groupIndicator=”” //显示在组列表旁边的Drawable对象
groupIndicator=”@null” //去掉小三角号

3.自定义适配器时继承BaseExpandableListAdapter,需要实现的方法:

getGroupCount();返回包含的组列表项的数目。
getGroupView();返回的View对象将作为组列表项。
getChildrenCount();返回特定组所包含的子列表项的数量
getChildView();返回的View对象将作为特定组、特定位置的子列表项。

4.范例:

要求:建立一个组列表是clazz班级,字分组是puple的下拉列表:
思路:与以前的listview做法类似,只是需要做group的布局和child的布局,且clazz中包含puple的list表。生成两次view.

步骤:
1)xml控件设置
2)主界面获取
3)自定义适配器,继承BaseExpandableListAdapter。
4)数据model:
区别ListView:Group和Child都要写。
5)布局layout:
Group和Child的两个布局文件
model:

//Clazz.java文件:
public class Clazz {private String clazzName;private String clazzNum;private List<Puple> puples;//构造器public Clazz(String clazzName,String clazzNum){this.clazzName=clazzName;this.clazzNum=clazzNum;}public String getClazzName() {return clazzName;}public void setClazzName(String clazzName) {this.clazzName = clazzName;}public String getClazzNum() {return clazzNum;}public void setClazzNum(String clazzNum) {this.clazzNum = clazzNum;}public List<Puple> getPuples() {return puples;}public void setPuples(List<Puple> puples) {this.puples = puples;}}-------------------------------------
//Puple.java文件:
public class Puple {private String name;private String age;private String sex;//构造器public Puple(String name,String age,String sex){this.age=age;this.name=name;this.sex=sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}

dapter:

public class ExpandableAdapter extends BaseExpandableListAdapter{private List<Clazz> clazzs;private LayoutInflater flater;public ExpandableAdapter(List<Clazz> clazzs,LayoutInflater flater){this.clazzs=clazzs;this.flater=flater;}@Overridepublic Object getChild(int arg0, int arg1) {// TODO Auto-generated method stubreturn arg1;}@Overridepublic long getChildId(int arg0, int arg1) {// TODO Auto-generated method stubreturn arg1;}@Overridepublic int getChildrenCount(int arg0) {// TODO Auto-generated method stubreturn clazzs.get(arg0).getPuples().size();}@Overridepublic Object getGroup(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic int getGroupCount() {// TODO Auto-generated method stubreturn clazzs.size();}@Overridepublic long getGroupId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic boolean hasStableIds() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean isChildSelectable(int arg0, int arg1) {// TODO Auto-generated method stubreturn false;}//得到group的view@Overridepublic View getGroupView(int position, boolean arg1, View converView, ViewGroup arg3) {converView=flater.inflate(R.layout.clazz_item_view, null);TextView clazzName =(TextView) converView.findViewById(R.id.textview_clazz_name);TextView clazzNum =(TextView) converView.findViewById(R.id.textview_clazz_num);//赋值Clazz clazz = clazzs.get(position);clazzName.setText(clazz.getClazzName());clazzNum.setText(clazz.getClazzNum());return converView;}//得到child的view@Overridepublic View getChildView(int groupposition, int position, boolean arg2, View converView,ViewGroup arg4) {converView=flater.inflate(R.layout.puple_item_view, null);TextView pupleName =(TextView) converView.findViewById(R.id.textview_puple_name);TextView pupleAge=(TextView) converView.findViewById(R.id.textview_puple_age);TextView pupleSex=(TextView) converView.findViewById(R.id.textview_puple_sex);//赋值Puple puple = clazzs.get(groupposition).getPuples().get(position);pupleName.setText(puple.getName());pupleAge.setText(puple.getAge());pupleSex.setText(puple.getSex());return converView;}}

主界面:

public class ExpandActivity extends Activity{private ExpandableListView mExpandView;private List<Clazz> clazzs;private ExpandableAdapter expand_adapter;private LayoutInflater flater;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_expand);mExpandView = (ExpandableListView) findViewById(R.id.expandView);init();flater = getLayoutInflater();expand_adapter = new ExpandableAdapter(clazzs, flater);mExpandView.setAdapter(expand_adapter);}private void init() {clazzs = new ArrayList<Clazz>();Clazz clazz1 = new Clazz("一班", "201501");List<Puple> puples1 = new ArrayList<Puple>();//建puplePuple puple1 = new Puple("王五", "23", "男");Puple puple2 = new Puple("是否", "23", "男");Puple puple3 = new Puple("阿凡达", "23", "女");Puple puple4 = new Puple("上当", "24", "女");Puple puple5 = new Puple("发给", "25", "男");Puple puple6 = new Puple("粉红色", "27", "男");//将puple传入list集合中puples1.add(puple1);puples1.add(puple2);puples1.add(puple3);puples1.add(puple4);puples1.add(puple5);puples1.add(puple6);//将拥有puple的list传给clazz1clazz1.setPuples(puples1);Clazz clazz2 = new Clazz("二班", "201502");List<Puple> puples2 = new ArrayList<Puple>();//建puplePuple puple21 = new Puple("王五", "23", "男");Puple puple22 = new Puple("是否", "23", "男");Puple puple23 = new Puple("阿凡达", "23", "女");Puple puple24 = new Puple("rain", "24", "女");Puple puple25 = new Puple("发给", "25", "男");Puple puple26 = new Puple("粉红色", "27", "男");//将puple传入list集合中puples2.add(puple1);puples2.add(puple2);puples2.add(puple3);puples2.add(puple4);puples2.add(puple5);puples2.add(puple6);//将拥有puple的list传给clazz1clazz2.setPuples(puples2);Clazz clazz3 = new Clazz("三班", "201503");List<Puple> puples3 = new ArrayList<Puple>();//建puplePuple puple31 = new Puple("王五", "23", "男");Puple puple32 = new Puple("re", "23", "男");Puple puple35 = new Puple("额", "25", "男");Puple puple36 = new Puple("粉红色", "27", "男");//将puple传入list集合中puples3.add(puple1);puples3.add(puple2);puples3.add(puple3);puples3.add(puple4);puples3.add(puple5);puples3.add(puple6);//将拥有puple的list传给clazz1clazz3.setPuples(puples3);Clazz clazz4 = new Clazz("四班", "201504");List<Puple> puples4 = new ArrayList<Puple>();//建puplePuple puple41 = new Puple("发给", "23", "男");Puple puple42 = new Puple("儿童", "23", "男");Puple puple43 = new Puple("阿凡达", "23", "女");Puple puple44 = new Puple("re人", "24", "女");//将puple传入list集合中puples4.add(puple1);puples4.add(puple2);puples4.add(puple3);puples4.add(puple4);puples4.add(puple5);puples4.add(puple6);//将拥有puple的list传给clazz1clazz4.setPuples(puples4);//将第一个clazz1添加到clazzs集合中。clazzs.add(clazz1);clazzs.add(clazz2);clazzs.add(clazz3);clazzs.add(clazz4);}}

结果演示:

第3组UI(2)-AdapterView之GridView、AutoCompleteTextView、Spinner、Gallery和ExpandableListView相关推荐

  1. 2.5 UI组件-AdapterView及子类(疯狂android学习笔记)

    列表视图(ListView)和ListActivity ①直接使用ListView创建 ②让Activity继承ListActivity(相当于该activity显示的组件为ListView) 提示: ...

  2. 疯狂Android讲义(二)——第二部分:第1组UI组件(布局管理器)

    一.第1组UI组件:布局管理器 Android 的界面组件比较多,不利于掌握它们内在的关系.为了帮助读者更好地掌握Android界面组件的关系,本书将会把这些界面组件按照它们的关联分析,分为几组进行介 ...

  3. Android开发:5-2、ListView、GridView、Spinner

    ListView ListView GridView: Spinner ListView 常用组件之一,常以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,还可以响应用户的点击事件 1.点击 ...

  4. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

  5. 第5组UI 让你的界面酷炫到底-ViewAniMator之ViewSwitcher、ImageSwitcher(图像切换器)、TextSwitcher(文本切换器)、ViewFlipper

    ViewAniMator是一个基类,它继承了FrameLayout,因此它表现了FrameLayout的一些特征,可以将多个View组件"叠"在一起.额外的功能是:在View切换时 ...

  6. 笔记32 | UI系列之EditText和AutoCompleteTextView

    地址 http://blog.csdn.net/xiangyong_1521/article/details/78499706 目录 EditText AutoCompleteTextView 附 1 ...

  7. SAP 电商云 Spartacus UI shipping method 切换时的 spinner 显示

    component 里增加一个新成员属性:setModePressed, 默认为 false 在 changeMode 函数执行时,将该属性设置为 true: 然后,在对应的 effect 成功调用了 ...

  8. UI组件之AdapterView及其子类关系,Adapter接口及其实现类关系

    AdapterView本身是一个抽象基类,它派生的的子类在用法上十分相似.AdapterView直接派生的三个子类:AbsListView,AbsSpinner,AdapterViewAnimator ...

  9. 未来科幻计算机,AE模板:500组科幻未来高科技UI界面人体计算机数据图表元素...

    AE模板:500组科幻未来高科技UI界面人体计算机数据图表元素:超过500组高科技元素, 11组UI屏幕分辨率为4K(3840×2160),包含3D视频效果预览,一键控制颜色等参数,人 物层为PNG图 ...

最新文章

  1. opengl库区分:glut、freeglut、glfw、glew、gl3w、glad
  2. python3正则表达式符号和用法
  3. liunx 学习笔记-wzq
  4. DeepFake噩梦来了!武大阿里团队提出FakeTagger,重新识别率达95%
  5. 自己动手写C语言编译器(2)
  6. Struts的MVC和Spring的MVC的区别
  7. CodeForces - 1249C2 Good Numbers (hard version)(进制转换)
  8. JBuilder9+Weblogic8.1——Filter过滤器在Jbuilder9中的运用
  9. java input是什么意思_java中的【...】表示什么意思
  10. 换个角度思考勒索攻击事件
  11. 66元机票盲盒,去哪随机、日期随机:要不起!
  12. 用QFileDialog::getOpenFileUrls打开本地文件:指定路径
  13. 软件测试用例(全面)
  14. AI CC2017安装后,安装目录里找不到amtlib.dll文件的问题
  15. webstorm设置中文界面
  16. [CA-1]存储器(Caches)
  17. 1u服务器系统风扇,1U工控服务器机箱介绍
  18. 计算机可以调剂到资源与环境吗,资源与环境求调剂 - 考研 - 小木虫 - 学术 科研 互动社区...
  19. 【Hack The Box】linux练习-- Tabby
  20. 【javascript】设计模式

热门文章

  1. 图书管理系统(vue2 + springboot +mybatis-Plus)前后端分离项目
  2. C语言常用编程技巧-结构体数组
  3. Typora 基本使用操作
  4. simulink电力电子仿真(5)三相桥式全控整流电路
  5. python接入微信支付_干货分享:微信跨境支付接入全流程
  6. autojs教程:多多果林app脚本代码
  7. LINE上市后引发的一场社交软件宫斗戏
  8. python字符串最后一次的索引_lastIndexOf方法——获取字符最后的索引
  9. Windows 10上快速尝鲜bash on Ubuntu
  10. Upstash:低延迟、低成本、高可用性的无服务器数据库服务平台