android中的高级组件(二)(Spinner,ListView,GridView)
来源:互联网 发布:telnet 服务 linux 编辑:程序博客网 时间:2024/06/02 00:17
Spinner 列表选择框
Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以
直接设置数组源。
android:entries=”@array/xx”/>//设置数组源
通过setOnItemSelectedListener来监听他的改变
示例图如下;
public class MainActivity extends Activity { Spinner spinner; String[] array = { "", "普快", "空调", "特快", "动车", "高铁" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // position 就是选中的条目,从0开始 String zheng = getResources().getStringArray(R.array.select)[position];//这种方式是把数值放在xml中 //直接从数组中取得用 String zheng = array[position] Toast.makeText(getBaseContext(), zheng, Toast.LENGTH_SHORT) .show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // 从没触发过 Log.e("TAG", "------------->>没有选择"); } }); }}//xml中的配置<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.lesson7_spinner.MainActivity" > <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>
values中的strings.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Lesson7_Spinner</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string-array name="select"> <item>结婚证</item> <item>身份证</item> <item>军官证</item> <item>单身证</item> </string-array></resources>
ListView列表视图
ListView是Android中最重要的一种视图,基本上是个软件基本都会使用ListView,它以垂直列
表形式列出需要显示的列表,只有通过Adapter才可以把列表中的数据映射到ListView中。
列表的显示需要三个元素:
ListVeiw 用来展示列表的View。
适配器用来把数据映射到ListView上的中介。
数据具体的将被映射的字符串,图片,或者基本组件
XML配置:
1.
实例图如下:
public class MainActivity extends Activity { String[] names = { "范冰冰", "李晨", "王宝强", "小泽玛利亚", "吴京" }; String[] contents = { "简介:范冰冰,1981年9月16日生于山东青岛,华语影视女演员、歌手、制片人。1996年参演电视剧《女强人》。1998年主演电视剧《还珠格格》系列成名,2001年起投身大银幕。", "简介:李晨,1978年11月24日出生于北京市,中国内地影视男演员、监制、赛车手,毕业于北京群星艺术学院。", "王宝强,1984年5月29日出生于河北省邢台市,中国内地男演员、导演。王宝强6岁开始练习武术,8岁在嵩山少林寺做俗家弟子。2003年,凭借剧情片《盲井》获得第40届台湾电影金马奖最佳新演员奖[1-2] 。2004年,因参演冯小刚执导的剧情片《天下无贼》而获得关注。", "简介:小泽玛利亚(日语:小澤マリア、おざわ まりあ,英语:Ozawa Maria,1986年1月8日-)日本AV女优,出生于日本北海道,混血儿(父亲是法裔加拿大人,母亲是日本人),拥有欧洲人的面容和东方人的娇小体格。", "姓名:吴京生日:1974年04月03日职业:演员,导演简介:吴京,1974年04月3日出生于北京,中国内地演员,导演。毕业于北京体育大学。1989年进入北京市武术队" }; int[] ids = { R.drawable.fbb, R.drawable.lichen, R.drawable.wangbaoqiang,R.drawable.xz,R.drawable.wj }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = (ListView) findViewById(R.id.lv); //适配器 List<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>(); final List<Article> list2 = new ArrayList<MainActivity.Article>(); for (int i = 0; i < 5; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("img", ids[i]); map.put("name", names[i]); map.put("content", contents[i]); list.add(map); list2.add(new Article(ids[i],names[i] , contents[i])); } MyBaseAdapter2 adapter = new MyBaseAdapter2(this,list2); lv.setAdapter(adapter); } public static class Article { String name; String content; int id; @Override public String toString() { return "int="+ id +",name=" + name + ", content=" + content + "]"; } public Article(int id,String name, String content) { super(); this.id = id; this.name = name; this.content = content; } }}
//自己写的一个适配器
public class MyBaseAdapter2 extends BaseAdapter { private Context context; private List<Article> list; public MyBaseAdapter2(Context context, List<Article> list) { this.context = context; this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub return list == null ? 0 : list.size(); } @Override public Article getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(context, R.layout.item_layout, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else holder = (ViewHolder) convertView.getTag(); holder.setData(list.get(position)); return convertView; } // 对于一个较复杂的布局,组件比较多 class ViewHolder// 保存的是所有的布局上的组件 { ImageView img; TextView name; TextView content; public ViewHolder(View convertView) { img = (ImageView) convertView.findViewById(R.id.img); name = (TextView) convertView.findViewById(R.id.text1); content = (TextView) convertView.findViewById(R.id.text2); // convertView.setTag(this); } public void setData(Article a) { img.setImageResource(a.id); name.setText(a.name); content.setText(a.content); } }}
//主xml<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.xykj.id05_10_11work7baseadapter.MainActivity" > <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" ></ListView></RelativeLayout>//显示样式的xml<?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="match_parent" > <ImageView android:layout_width="80dp" android:layout_height="80dp" android:id="@+id/img" android:src="@drawable/ic_launcher" /><LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_toRightOf="@id/img" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text1" android:text="名字"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text2" android:text="简介"/></LinearLayout></RelativeLayout>
GridView网格视图
GridView网格视图是按照行,列分布的方式来显示多个组件,通常用于显示图片或是图标等,在使
用网格视图时,首先需要要在屏幕上添加GridView组件。
常用属性:
1. android:columnWidth 用于设置列的宽度
2. android:gravity 用于设置对齐方式
3. android:horizontalSpacing 用于设置各元素之间的水平间距
4. android:numColumns 用于设置列数
5. android:stretchMode 用于设置拉伸模式,其中属性值可以是
6. //none(不拉伸),
7. //spacingWidth(仅拉伸元素之间的间距),
8. //columnWidth(仅拉伸表格元素本身)或
9. //spacingWidthUniform(表格元素本身,元素之间的间距一起拉伸)
10. android:verticalSpacing 用于设置各元素之间的垂直间距
GridView与ListView一样,都需要通过Adapter来提供显示的数据,ListView可以使用android:entries 来得到数据,但GridView不可以,必须通过适配器来为其添加数据。
GridView的事件和ListView一样,都是设
置 setOnItemClickListener(OnItemClickListener listener);
示例图如下:
public class MainActivity extends Activity { GridView gr; int[] ids = { R.drawable.p01, R.drawable.p02, R.drawable.p03, R.drawable.p04, R.drawable.p05, R.drawable.p06, R.drawable.p07, R.drawable.p08, R.drawable.p09, R.drawable.p10, R.drawable.p11, R.drawable.p12 };//图片需要自己导入drawable目录下 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //这是用自己的布局 setContentView(R.layout.activity_main); gr = (GridView) findViewById(R.id.gr); List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < 12; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("img1", ids[i]); data.add(map); } SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item_star, new String[] { "img1" }, new int[] { R.id.img1 }); //spinner.setAdapter(adapter); gr.setAdapter(adapter); gr.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { final ImageView iv = (ImageView) findViewById(R.id.img2); if (iv==null) { Toast.makeText(MainActivity.this, "xuanzhongl"+position, Toast.LENGTH_SHORT).show(); }else { iv.setImageResource(ids[position]); } } }); }}
//主xml<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" android:orientation="vertical" > <GridView android:numColumns="4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/gr" /> <ImageView android:id="@+id/img2" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>//显示样式的xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/img1" android:stretchMode="columnWidth" android:layout_width="80dp" android:layout_height="80dp" /></LinearLayout>
- android中的高级组件(二)(Spinner,ListView,GridView)
- android高级组件(2)AutoCompleteTextView,MutiAutoCompleteTextView,Spinner,ListView
- Android第四讲——常用的基本控件(二)ListView、GridView、Spinner、AutoCompleteListView、Gallery、ExpandableListView
- Android BaseAdapter在GridView,ListView,Spinner中的使用
- android 高级组件之Spinner
- Android—高级控件(二)ListView
- Android BaseAdapter(Spinner,ListView,GridView)的使用
- AdapterView性能优化(ListView,GridView,Gallery,Spinner)
- Android界面组件3--ListView Spinner
- Android中的Spinner 下拉列表的用法(二)
- AutoCompleteTextView、Spinner、ListView、Dialog等高级组件练习
- Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
- Android基本组件06(Spinner)
- Android组件之Spinner(下拉列表)
- Android组件 自定义下拉菜单(Spinner)
- Android组件之Spinner(下拉列表)
- Android ListView/GridView 中Adapter的使用(二)
- Android入门/ Spinner组件(二十)
- hdu 2571 命运
- XCode8,Jenkins打包签名问题
- 从零开始学JDBC--1.3 一个完整的DDL过程(含代码)
- 技术面试指南
- 如何分叉以太坊并变成自己的私链?
- android中的高级组件(二)(Spinner,ListView,GridView)
- Android面试常见知识点【一】(不定期更新)
- chattr和lsattr命令
- HTTP请求格式、状态码及常用请求方法
- IOS tableCell中获取frame 无论设备尺寸一直是320的解决办法
- Fragment+FragmentTabHost实现仿QQ底部菜单栏
- 关于github上一些非android studio的开源类库导入的失败的问题
- Android 设置控件按宽:高=4:3显示
- 数据存储(五种方式)SharedPreferences存储