《移动应用程序设计基础》实验三点菜单列表实现

实验名称:

点菜单列表实现

所使用的工具软件及环境:

JDK1.8,Android Studio

一、实验目的:

进一步理解Android各种控件的使用,加深控件的属性、方法的使用,熟练掌握ListView控件的使用,熟练掌握对话框的使用。

二、实验内容:

1.实现点菜单列表

1.1布局结构

列表布局分为两大部分,上半部分显示列表内容,底部显示所有菜品的总价;

菜品项如图所示包括

1.图片,图片格式120*120

2.标题,居中,android:textAppearance="?android:attr/textAppearanceLarge"
3.
菜品介绍内容,最多显示3行,超过部分用…表示,android:textAppearance="?android:attr/textAppearanceMedium"

4.显示单价,显示字体android:textAppearance="?android:attr/textAppearanceMedium"

5.左右两端显示按钮,中间显示数字。

1.2功能

1.以列表方式显示点菜单;

2.点击“-”或“+”按钮,购买数量作相应变化,同时,总价也随之变动

1.3所用资源

1.数据

   <array name="item_content">

        <item>“白灼”是粤菜的一种烹调技法,就是用滚水或汤将食物烫熟。

            多数的北方人都对“白灼”有一种概念上的混淆,认为白灼就是用白水煮一下捞出,其实不然,那是对字面上的一个误解,真正的白灼虾还是有几道工序的,经过一个朋友的指点,才得以顿悟。

            白灼虾其实是最简单的,无需过多调料,没有繁杂的过程,也不必耗费大量的时间,甚至不用考虑食用时的温度,不用过多思忖摆盘的装饰,搭配一个同样简约的酸咸小味碟,就可以上桌了。

            特别是想吃虾又懒得太操劳的人,可以选择做这道菜,简单又新鲜。也是我最钟爱的一道保留菜谱。

            作为一只基围虾,衣衫齐整的出场体面面完整,无疑是对它的最高奖赏,绅士而优雅地被人类享用当然是最好的结局。

        </item>

        <item>

            相传,烤鸭之美,是源于名贵品种的北京鸭,它是当今世界最优质的一种肉食鸭。

            据说,这一特种纯北京鸭的饲养,约起于千年前左右,是因辽金元之历代帝王游猎,偶获此纯白野鸭种,后为游猎而养,一直延续下来,才得此优良纯种,并培育成今之名贵的肉食鸭种。即用填喂方法育肥的一种白鸭,故名“填鸭”。

            不仅如此,北京鸭曾在百年以前传至欧美,经繁育一鸣惊人。因而,作为优质品种的北京鸭,成为世界名贵鸭种来源已久。

        </item>

    </array>

    <array name="item_title">

        <item>白灼虾</item>

        <item>北京烤鸭</item>

    </array>

    <array name="item_price">

        <item>58</item>

        <item>128</item>

</array>

2.图片

3.布局文件(各自实现)

2.点击每个列表项,以弹出Dialog方式显示该菜品的详情

2.1布局

 

包括title,图片,菜品标题,详情,单价和按钮

2.2功能

点击列表项,将该菜品的信息(图片,菜品标题,详情和单价)以构造函数参数的方式传递到弹出对话框中,弹出对话框通过自定义界面布局的形式实现菜品详情的显示。

三、实验结果测试

主要的布局文件和string.xml文件,MainActivity.java为登录界面的java文件,ProgressActivity.java为菜单界面的java文件。dialog和dialog2为两个普通对话框的布局文件。progress为菜单的listview的布局文件,simpleadapter_list_item为listview中item的布局文件。

主要代码:(完整所有代码在资源下载压缩包中,文章结尾有资源下载链接)

//ProgressActivity.java
package com.example.login;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
import android.content.DialogInterface;import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
//import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;import com.example.login.R;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;public class ProgressActivity extends AppCompatActivity {private ListView listView;private int [] ivR = {R.drawable.pic1,R.drawable.pic2,};private String[] titles;private String[] content;private String[] price;private Button less,add;private TextView num;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.progress);//引用string中的文件listView = (ListView)findViewById(R.id.listView);List<HashMap<String,Object>> arrayList = new ArrayList<>();titles =getResources().getStringArray(R.array.item_title);content =getResources().getStringArray(R.array.item_content);price =getResources().getStringArray(R.array.item_price);//创建自定义Adapter,继承BaseAdapterMyBaseAdapter MyBase=new MyBaseAdapter();listView.setAdapter(MyBase);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {AlertDialog.Builder builder = new AlertDialog.Builder(ProgressActivity.this);builder.setTitle("菜肴详情");builder.setCancelable(true);            //点击对话框以外的区域是否让对话框消失//设置正面按钮builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});//创建AlertDialog对象AlertDialog dialog = builder.create();//对话框显示的监听事件if(i==0){View dialogView = View.inflate(ProgressActivity.this, R.layout.dialogactivity, null);dialog.setView(dialogView);}else{View dialogView = View.inflate(ProgressActivity.this, R.layout.dialogactivity2, null);dialog.setView(dialogView);}dialog.show();}});}private class MyBaseAdapter extends BaseAdapter{@Overridepublic int getCount() {return 2;}@Overridepublic Object getItem(int i) {return null;}@Overridepublic long getItemId(int i) {return 0;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {View vi=View.inflate(ProgressActivity.this,R.layout.simpleadapter_list_item,null);ImageView imageView=(ImageView) vi.findViewById(R.id.list_item_iv);TextView titles_=(TextView) vi.findViewById(R.id.list_item_tv1);TextView content_=(TextView) vi.findViewById(R.id.list_item_tv2);TextView price_=(TextView) vi.findViewById(R.id.list_item_tv3);TextView num=(TextView)vi.findViewById(R.id.textView_num);TextView sum=(TextView)findViewById(R.id.textView_sumprice);Button less=(Button)vi.findViewById(R.id.button_less);Button add=(Button)vi.findViewById(R.id.button_add);imageView.setBackgroundResource(ivR[i]);titles_.setText(titles[i]);content_.setText(content[i]);price_.setText(price[i]);add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {int a=Integer.parseInt((String)num.getText());String a0=Integer.toString(a+1);num.setText(a0);if(i==0){int t=Integer.parseInt((String)sum.getText());String t0=Integer.toString(t+58);sum.setText(t0);}else{int t=Integer.parseInt((String)sum.getText());String t0=Integer.toString(t+128);sum.setText(t0);}}});less.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {int a=Integer.parseInt((String)num.getText());if(a==0){String a0=Integer.toString(a);num.setText(a0);}else {String a0=Integer.toString(a-1);num.setText(a0);if(i==0){int t=Integer.parseInt((String)sum.getText());String t0=Integer.toString(t-58);sum.setText(t0);}else{int t=Integer.parseInt((String)sum.getText());String t0=Integer.toString(t-128);sum.setText(t0);}}}});return vi;}}}

实验结果截图:

 

 

心得与体会:

本次实验学习时间较长,但是收获颇多,对android常用高级控件进行使用,学习了listview的还有BaseAdapter的使用,对普通对话框Dialog有了进一步的学习,还复习了以前实验的内容与知识。对今后android开发软件的学习有了进一步的加深与进步。

https://download.csdn.net/download/weixin_48388330/76125440

资源中的图片以及内容只适用与学习

移动应用程序设计基础——点菜单列表实现相关推荐

  1. 移动应用程序设计基础——点菜单列表实现2.0(实现短信接受以及服务与广播的使用)

    <移动应用程序设计基础>实验四 Android基本组件交互 实验名称: 点菜单列表实现 所使用的工具软件及环境: JDK1.8,Android Studio 一.实验目的: [实验目的] ...

  2. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  3. python编程基础与应用-Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  4. python程序设计基础与应用 机械工业出版社_Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  5. 非计算机专业《Python程序设计基础》教学参考大纲

    <Python程序设计基础> 教  学  大  纲 目   录 一. 课程简介 二. 教学目的和要求 三. 教学中应注意的问题 四. 教学内容 五. 教学课时分配 六. 教材与参考书目 一 ...

  6. 《Python程序设计基础》在亚马逊当当京东互动出版网淘宝等各大书店上架

    拙作<Python程序设计基础>(董付国编著,清华大学出版社,2015年8月出版,"十一五"国家级规划教材)陆续在亚马逊.当当.京东.互动出版网.淘宝以及各大书店上架, ...

  7. 计算机与程序设计基础 vb,《VB程序设计基础》第4章 函数与过程

    <<VB程序设计基础>第4章 函数与过程>由会员分享,可在线阅读,更多相关<<VB程序设计基础>第4章 函数与过程(16页珍藏版)>请在人人文库网上搜索 ...

  8. Python程序设计基础教学大纲

    转载网址:https://mp.weixin.qq.com/s?__biz=MzI4MzM2MDgyMQ==&mid=2247486738&idx=1&sn=c56247741 ...

  9. python程序设计机械工业出版社课后答案-Python 3程序设计基础

    图书简介 配套资源:电子课件.教学大纲.源代码.习题答案 本书特色: 内容精练,实训题目经典实用,明确定位面向初.中级读者,由"入门"起步,侧重"提高". 附录 ...

最新文章

  1. 一个从四秒到10毫秒,花了1年的算法问题?
  2. python kafka消费最新数据_python kafka消费数据库
  3. 【Storm】storm安装、配置、使用以及Storm单词计数程序的实例分析
  4. 2021合工大超越卷数二好题精选
  5. final修饰的是引用还是引用的对象
  6. Office编程在dot Net环境中总结(Word生成表格报表篇)
  7. IntelliJ 创建main函数、for循环、输出语句快捷键
  8. 为什么Spring需要三级缓存解决循环依赖,而不是二级缓存?
  9. 推箱子android源代码,android自定义view实现推箱子小游戏
  10. 最邻近规则分类 KNN (K-Nearest Neighbor)算法及python实现
  11. pyhthon Opencv截取视频中的图片
  12. 电商项目面试题 及mysql面试题 太难没啥用
  13. 基于PHP图书馆图书借阅管理系统
  14. JMeter使用教程-压测
  15. 非极大值抑制(NMS)讲解
  16. Java开发微信小程序(三)用小程序给用户推送服务消息
  17. linux启动过程文件系统崩溃,Linux启动过程中文件系统的加载
  18. 图的表示(无权图和有权图)
  19. 2019,华为一号文
  20. javascript_JSON.parse() 与 JSON.stringify()_ZHOU125disorder_

热门文章

  1. java/php/net/python个人博客网站的研究与实现设计
  2. 在校大学生应不应该去培训班培训,会不会有效果
  3. springboot理发店会员管理系统java
  4. 【二叉树专题】—— 反向构造二叉树
  5. ✔G【OPA847】【单运放 】高速 宽带 放大模块 3.9G带宽 高压摆率
  6. ELF格式文件详细分析
  7. 方法的重载---(Java版)
  8. 中值联认证中心对区值认证验证进行了重大升级
  9. Object类型的数据之间比较大小
  10. IB物理IA:如何写Marking Rubric中Evaluation对应部分获得满分?