1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 移动开发技术(Android)——实验5 Android高级控件的应用

移动开发技术(Android)——实验5 Android高级控件的应用

时间:2023-08-22 17:21:59

相关推荐

移动开发技术(Android)——实验5 Android高级控件的应用

移动开发技术——实验5 Android高级控件的应用

一、实验目的二、实验内容1.Spinner、ListView控件与Adapter适配器(一)2.Spinner、ListView控件与Adapter适配器(二)3.类似应用市场的界面和功能4.GridView控件

一、实验目的

掌握在XML布局文件中添加下拉列表、列表视图和网格视图的语法格式及其常用属性;掌握获取下拉列表和列表视图选中项值的方法。理解ListView显示的基本原理;掌握开发ListView的基本要素;掌握ListView+ArrayAdapter应用实现的基本步骤。掌握ListView/GridView+SimpleAdapter的应用。

二、实验内容

1.Spinner、ListView控件与Adapter适配器(一)

创建一个Android项目,项目名称为“shiyan0501_班级_×××(学生姓名)”,要求:

界面构成:

①5个文本框用于显示提示信息“姓名:”、“年龄”、“专业”、“学历”、“爱好”;

②2个编辑框分别用于接收学生的姓名和年龄;

③3个单选按钮用于专业选择(计算机科学与技术、软件工程、网络工程);

④1个Spinner用于学历选择,使用数组资源获取列表项(高中、本科、硕士研究生、博士研究生、其他);

⑤n个复选框用于爱好选择(n>=3);

⑥3个普通按钮,文本分别显示为“录入”、“重置”、“显示”;

⑦1个ListView,用于显示录入的所有学生信息。程序功能:

①单击“录入”按钮,将用户输入和选择的各项信息写入数组;

②单击“重置”按钮,清空用户输入的信息;

③单击“显示”按钮,将所有录入的学生信息在ListView中显示。

【文字描述】首先设置布局为TableLayout.添加5个文本框用于显示提示信息;再添加2个编辑框分别用于接收学生的姓名和年龄;3个单选按钮用于专业选择(物联、计科、软件),并将其放入一个RadioGroup中;1个Spinner用于学历选择,使用数组资源获取列表项(高中、本科、硕士研究生、博士研究生、其他);4个复选框用于爱好选择,并将其放入一个TableRow中;3个普通按钮,文本分别显示为“录入”、“重置”、“显示”;1个ListView,用于显示录入的所有学生信息。添加一个array.xml文件,里面设置<string-array name="zhuanye">和<item>。在JAVA代码中,获取到各个控件,通过内部类设置事件监听。进行相应的操作。

【布局activity_main.xml文件】<TableLayout xmlns:android="/apk/res/android"xmlns:tools="/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=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="姓名" /><EditText android:id="@+id/ED_name" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="年龄" /><EditText android:id="@+id/ED_age" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="专业" /><RadioGroupandroid:id="@+id/RadioGroup1"android:orientation="horizontal" ><RadioButtonandroid:id="@+id/radio_IOT"android:text="物联" /><RadioButtonandroid:id="@+id/radio_jike"android:text="计科" /><RadioButtonandroid:id="@+id/radio_ruanjian"android:text="软件" /></RadioGroup><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学历" /><Spinnerandroid:id="@+id/spinner"android:entries="@array/zhuanye" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="爱好" /><TableRow android:id="@+id/CB_TR" ><CheckBox android:text="学习" /><CheckBox android:text="跑步" /><CheckBox android:text="看书" /><CheckBox android:text="音乐" /></TableRow><TableRow><Buttonandroid:id="@+id/submit_BT"android:layout_weight="1"android:text="录入" /><Buttonandroid:id="@+id/show_BT"android:layout_weight="1"android:text="显示" /><Buttonandroid:id="@+id/reset_BT"android:layout_weight="1"android:text="重置" /></TableRow><ListViewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="wrap_content" ></ListView></TableLayout>

【Spinner组件的内容array.xml文件】(此文件放在res——values文件夹下)<?xml version="1.0" encoding="utf-8"?><resources><string-array name="zhuanye"><item></item><item>高中</item><item>本科</item><item>硕士研究生</item><item>博士研究生</item><item>其他</item></string-array><string-array name="all_mess"></string-array></resources>

【布局adapter.xml适配器文件】(此文件与布局activity_main.xml文件放在一起)<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" android:id="@+id/myadapter"android:textSize="15sp"></TextView>

【MainActivity.java文件】import java.util.ArrayList;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.Activity;import android.content.ClipData.Item;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.ListView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.SimpleAdapter;import android.widget.Spinner;import android.widget.TableRow;import android.widget.TextView;public class MainActivity extends Activity {TextView show;EditText name_ET,age_ET;RadioGroup dep ;CheckBox hobby_CB;TableRow CB_TR;Spinner spinner;ListView listview;String name,age;String department="";String hobby="";String xueli="";Button sb_BT,rs_BT,show_BT;View item;ArrayList<String> allmess;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);name_ET=(EditText) findViewById(R.id.ED_name);age_ET=(EditText) findViewById(R.id.ED_age);dep = (RadioGroup) findViewById(R.id.RadioGroup1);spinner=(Spinner) findViewById(R.id.spinner);listview=(ListView) findViewById(R.id.listview);allmess = new ArrayList<String>();CB_TR=(TableRow) findViewById(R.id.CB_TR);sb_BT=(Button) findViewById(R.id.submit_BT);sb_BT.setOnClickListener(new ClickListener());rs_BT=(Button) findViewById(R.id.reset_BT);rs_BT.setOnClickListener(new ClickListener());show_BT=(Button) findViewById(R.id.show_BT);show_BT.setOnClickListener(new ClickListener());dep.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubRadioButton r;if(checkedId!=-1){r = (RadioButton) findViewById(checkedId);department=r.getText().toString();}else{department="";}}}); }class ClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()){case R.id.submit_BT:name=name_ET.getText().toString();age=age_ET.getText().toString();hobby="";for(int i=0;i<CB_TR.getChildCount();i++){CheckBox c = (CheckBox) CB_TR.getChildAt(i);if(c.isChecked()){hobby+=c.getText().toString()+" ";}}xueli=spinner.getSelectedItem().toString();allmess.add(name+" "+age+" "+department+" "+xueli+" "+hobby);break;case R.id.reset_BT:name_ET.setText("");age_ET.setText("");dep.clearCheck();spinner.setSelection(0);for(int i=0;i<CB_TR.getChildCount();i++){CheckBox c = (CheckBox) CB_TR.getChildAt(i);c.setChecked(false);}break;case R.id.show_BT:ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,//android.R.layout.simple_list_item_1,R.layout.adapter,allmess);listview.setAdapter(adapter);break;}}}}

2.Spinner、ListView控件与Adapter适配器(二)

创建一个Android项目,项目名称为“shiyan0502_专业_×××(学生姓名)”,要求:

界面构成:

①5个文本框用于显示提示信息“图书名称:”、“图书价格”、“图书版次”“图书类别”、“出版社”;

②2个编辑框分别用于接收图书的名称和价格;

③4个单选按钮用于版次选择(1版、2版、3版、3版以上);

④n个复选框用于类别选择(教育、计算机、小说、科技、励志、文学等);

⑤1个Spinner用于出版社选择,使用数组资源获取列表项(人民邮电出版社、科学出版社、高等教育出版社、清华大学出版社,其他等);

⑥3个普通按钮,文本分别显示为“录入”、“重置”、“显示”;

⑦1个ListView,用于显示录入的所有图书信息。程序功能:

①单击“录入”按钮,将用户输入和选择的各项信息写入数组;

②单击“重置”按钮,清空用户输入的信息;

③单击“显示”按钮,将所有录入的图书信息在ListView中显示。

【文字描述】首先使用TableLayout布局:添加5个文本框用于显示提示信息2个编辑框分别用于接收图书的名称和价格;4个单选按钮用于版次选择,并将其放入一个RadioGroup中;6个复选框用于类别选择,3个为一组放入TableRow中; 1个Spinner用于出版社选择,使用数组资源获取列表项,并在res_value文件夹下创建一个array.xml的文件,里面存入数组资源列表。3个普通按钮,文本分别显示为“录入”、“重置”、“显示”;1个ListView,用于显示录入的所有图书信息。在Java代码中获取到所有的编辑框、RadioGroup、含有CheckBox的TableRow、三个按钮、spinner和listview,并对三个按钮设置事件监听。

【布局activity_main.xml文件】<TableLayout xmlns:android="/apk/res/android"xmlns:tools="/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=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="图书名称" /><EditText android:id="@+id/ED_name" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="图书价格" /><EditText android:id="@+id/ED_prize" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="图书版次" /><RadioGroupandroid:id="@+id/RadioGroup1"android:orientation="horizontal" ><RadioButtonandroid:id="@+id/radio_1"android:text="1版" /><RadioButtonandroid:id="@+id/radio_2"android:text="2版" /><RadioButtonandroid:id="@+id/radio_3"android:text="3版" /><RadioButtonandroid:id="@+id/radio_3p"android:text="3版以上" /></RadioGroup><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="图书类别" /><TableRow android:id="@+id/CB_TR" ><CheckBox android:text="教育" /><CheckBox android:text="计算机" /><CheckBox android:text="小说" /></TableRow><TableRow android:id="@+id/CB_TR2" ><CheckBox android:text="励志" /><CheckBox android:text="科技" /><CheckBox android:text="文学" /></TableRow><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="出版社" /><Spinnerandroid:id="@+id/spinner"android:entries="@array/publisher" /><TableRow><Buttonandroid:id="@+id/submit_BT"android:layout_weight="1"android:onClick="register"android:text="录入" /><Buttonandroid:id="@+id/show_BT"android:layout_weight="1"android:onClick="show"android:text="显示" /><Buttonandroid:id="@+id/reset_BT"android:layout_weight="1"android:onClick="reset"android:text="重置" /></TableRow><ListViewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="wrap_content" ></ListView></TableLayout>

【布局adapter.xml适配器文件】(此文件与布局activity_main.xml文件放在一起)<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="/apk/res/android"android:id="@+id/myadapter"android:layout_width="match_parent"android:layout_height="match_parent"android:textSize="15sp" ></TextView>

【Spinner组件的内容array.xml文件】(此文件放在res——values文件夹下)<?xml version="1.0" encoding="utf-8"?><resources><string-array name="publisher"><item>人民邮电出版社</item><item>科学出版社</item><item>高等教育出版社</item><item>清华大学出版社</item><item>其他</item></string-array></resources>

【MainActivity.java文件】import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.ListView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.Spinner;import android.widget.TableRow;import android.widget.RadioGroup.OnCheckedChangeListener;public class MainActivity extends Activity {EditText et_bookname,et_prize;String str_bookname,str_prize;RadioGroup rg_version;String str_version;TableRow row1,row2;String str_category;Spinner sp;String str_publisher;Button bt_submit,bt_reset,bt_show;ListView lv;ArrayList<String> List_allmess;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et_bookname=(EditText) findViewById(R.id.ED_name);et_prize=(EditText) findViewById(R.id.ED_prize);row1=(TableRow) findViewById(R.id.CB_TR);row2=(TableRow) findViewById(R.id.CB_TR2);sp=(Spinner) findViewById(R.id.spinner);bt_submit=(Button) findViewById(R.id.submit_BT);bt_reset=(Button) findViewById(R.id.reset_BT);bt_show=(Button) findViewById(R.id.show_BT);lv=(ListView) findViewById(R.id.listview);List_allmess=new ArrayList<String>();rg_version=(RadioGroup) findViewById(R.id.RadioGroup1);rg_version.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubRadioButton r;if(checkedId!=-1){r = (RadioButton) findViewById(checkedId);str_version=r.getText().toString();}else{str_version="";}}}); }public void register(View view){str_category="";for(int i=0;i<row1.getChildCount();i++){CheckBox c = (CheckBox) row1.getChildAt(i);if(c.isChecked()){str_category+=c.getText().toString()+" ";}}for(int i=0;i<row2.getChildCount();i++){CheckBox c = (CheckBox) row2.getChildAt(i);if(c.isChecked()){str_category+=c.getText().toString()+" ";}}str_bookname=et_bookname.getText().toString();str_prize=et_prize.getText().toString();str_publisher=sp.getSelectedItem().toString();List_allmess.add(str_bookname+" "+str_prize+" "+str_version+" "+str_category+" "+str_publisher);}public void reset(View view){et_bookname.setText("");et_prize.setText("");sp.setSelection(0);rg_version.clearCheck();for(int i=0;i<row1.getChildCount();i++){CheckBox c = (CheckBox) row1.getChildAt(i);c.setChecked(false);}for(int i=0;i<row2.getChildCount();i++){CheckBox c = (CheckBox) row2.getChildAt(i);c.setChecked(false);}}public void show(View view){ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,//android.R.layout.simple_list_item_1,R.layout.adapter,List_allmess);lv.setAdapter(adapter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

3.类似应用市场的界面和功能

创建一个Android项目,使用ListView控件将应用程序图标及名称进行显示,实现类似应用市场的功能,具体显示效果参照课件【例4】,图标和应用程序名称可自行设定。

【提示】首先需要在res文件夹下的drawable文件夹里存放几张图片直接在eclipse中粘贴到drawable文件夹下即可(其他编译器同理)图片不宜过大,几百KB为宜根据分辨率不同drawable有好几个文件夹由于我们不考虑不同分辨率场景下的情况将图片放在任何一个drawable文件夹下即可

【文字描述】在布局文件中添加一个listview,设置id大小等属性。创建一个List的布局文件,设置布局格式。在Java代码中,通过List<Map<String,Object>>存入图片,设置SimpleAdapter

【布局activity_main.xml文件】<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/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=".MainActivity" ><ListViewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="wrap_content" ></ListView></RelativeLayout>

【布局list_item.xml适配器文件】(此文件与布局activity_main.xml文件放在一起)<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><ImageViewandroid:id="@+id/iv_image"android:layout_width="150px"android:layout_height="150px"android:src="@drawable/ic_launcher" /><TextViewandroid:id="@+id/tv_name"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"android:text=""android:textSize="20sp" /></LinearLayout>

【strings.xml文件】(此文件在res——values文件夹下)<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">shiyan0503_专业班级_xxx</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string></resources>

【MainActivity.java文件】import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MainActivity extends Activity {ListView lv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String names[]={"石家庄站","河北工业大学","自然公园","C1教学楼","麻辣烫"};int image[]={R.drawable.img_1,R.drawable.img_2,R.drawable.img_3,R.drawable.img_4,R.drawable.img_5,};lv=(ListView) findViewById(R.id.listview);List<Map<String,Object>> listitem=new ArrayList<Map<String,Object>>();for(int i=0;i<names.length;i++){Map<String,Object> item = new HashMap<String,Object>();item.put("picname",names[i]);item.put("picid",image[i]);listitem.add(item);}SimpleAdapter sad = new SimpleAdapter(MainActivity.this,listitem, R.layout.list_item,new String[]{"picname","picid"},new int[]{R.id.tv_name,R.id.iv_image});lv.setAdapter(sad);lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, arg0.getItemAtPosition(arg2).toString(), 0).show();}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

4.GridView控件

【提示】首先需要在res文件夹下的drawable文件夹里存放几张图片直接在eclipse中粘贴到drawable文件夹下即可(其他编译器同理)图片不宜过大,几百KB为宜根据分辨率不同drawable有好几个文件夹由于我们不考虑不同分辨率场景下的情况将图片放在任何一个drawable文件夹下即可

【文字描述】首先在activity_main.xml文件中添加一个GridView,并设置id、列数、大小属性。之后在layout文件夹中添加一个gridview_item.xml文件,在里面添加ImageView和TextView并设置id、列数、大小属性。在MainActivity文件中首先获取到Gridview,定义字符串数组和整型数组,分别保存字符串和图片id。使用List<Map<String,Object>>通过for循环将图片添加入一个List中,最后设置适配器。

【布局activity_main.xml文件】<RelativeLayout <RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/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=".MainActivity" ><GridViewandroid:id="@+id/GV"android:layout_width="match_parent"android:layout_height="match_parent"android:numColumns="3" ></GridView></RelativeLayout>

【布局gridview_item.xml适配器文件】(此文件与布局activity_main.xml文件放在一起)<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:id="@+id/image_view"android:layout_width="100px"android:layout_height="100px"android:layout_gravity="center" /><TextViewandroid:id="@+id/text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center" /></LinearLayout>

【strings.xml文件】(此文件在res——values文件夹下)<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">shiyan0504_专业班级_xxx</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string></resources>

【MainActivity.java文件】import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.widget.GridView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {GridView lv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String names[]={"石家庄站","河北工业大学","自然公园","C1教学楼","麻辣烫"};int image[]={R.drawable.img_1,R.drawable.img_2,R.drawable.img_3,R.drawable.img_4,R.drawable.img_5};lv=(GridView) findViewById(R.id.GV);List<Map<String,Object>> listitem=new ArrayList<Map<String,Object>>();for(int i=0;i<names.length;i++){Map<String,Object> item = new HashMap<String,Object>();item.put("picname",names[i]);item.put("picid",image[i]);listitem.add(item);}SimpleAdapter sad = new SimpleAdapter(MainActivity.this,listitem, R.layout.gridview_item,new String[]{"picname","picid"},new int[]{R.id.text_view,R.id.image_view});lv.setAdapter(sad);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。