Android网络编程之一个Android下菜单系统模块的实现(主操作界面)_weixin_30268071的博客-程序员秘密

技术标签: 移动开发  

我们向上一个系统中增加一些功能,在成功登陆后,跳转到一个主操作界面,此界面为所有功能的入口,用一个GridView来实现

GridView的经典实现方法流程:布局文件中声明GridView ---> 编写一个ImageAdapter继承BaseAdapter并主要复写getView()方法 ---> 给GridView添加此adapter

布局文件很简单:

<LinearLayout 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" >
    
    <GridView 
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="90dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        android:gravity="center"
        />
        
</LinearLayout>
View Code

主Activity同样很简单,放在com.moka.activities中:

public class MainMenuActivity extends Activity {
    
    private GridView gridView = null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_menu);
        
        gridView = (GridView) findViewById(R.id.gridView);
        gridView.setAdapter(new ImageAdapter(this));
    }
    
}
View Code

 

ImageAdapter的编写稍微复杂,因为在这里我们把所用监听事件均放在这里处理,在这里我们先添加的是点菜功能,所以姑且把别的监听事件做简单处理

它放在com.moka.provider中:

public class ImageAdapter extends BaseAdapter {
    
    private Context context = null;
    
    // 所需的图片资源
    private Integer[] functionImgs = { R.drawable.diancai, R.drawable.bingtai, R.drawable.zhuantai,
            R.drawable.chatai, R.drawable.gengxin, R.drawable.shezhi,
            R.drawable.zhuxiao, R.drawable.jietai };
    
    public ImageAdapter(Context context) {
        this.context = context;
    }
    
    @Override
    public int getCount() {
        return functionImgs.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 准备向GridView中填充的ImageView图片与其一些参数
        ImageView imageView = null;
        if (convertView == null) {
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }
        // 设置图片源
        imageView.setImageResource(this.functionImgs[position]);
        
        // 设置监听事件
        switch (position) {
        case 0:
            imageView.setOnClickListener(new OrderListener());
            break;
        case 1:
            imageView.setOnClickListener(new UnionTableListener());
            break;
        case 2:
            imageView.setOnClickListener(new ChangeTableListener());
            break;
        case 3:
            imageView.setOnClickListener(new CheckTableListener());
            break;
        case 4:
            imageView.setOnClickListener(new UpdateListener());
            break;
        case 5:
            imageView.setOnClickListener(new SetupListener());
            break;
        case 6:
            imageView.setOnClickListener(new ExitListener());
            break;
        case 7:
            imageView.setOnClickListener(new PayListener());
            break;
        }
        
        return imageView;
    }
    
    private class OrderListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, OrderActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
        
    }
    private class UnionTableListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "并台!", Toast.LENGTH_SHORT).show();
        }
        
    }
    private class ChangeTableListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "转台!", Toast.LENGTH_SHORT).show();
        }
        
    }
    private class CheckTableListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "查台!", Toast.LENGTH_SHORT).show();
        }
        
    }
    private class UpdateListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "更新!", Toast.LENGTH_SHORT).show();
        }
        
    }
    private class SetupListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "设置!", Toast.LENGTH_SHORT).show();
        }
        
    }
    private class ExitListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "注销!", Toast.LENGTH_SHORT).show();
        }
        
    }
    private class PayListener implements OnClickListener {
        
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "结台!", Toast.LENGTH_SHORT).show();
        }
        
    }

}
View Code

 

关于点菜的OrderActivity及其服务器端有一定的难度,我们稍后再讨论,先看一下主操作界面效果:

 

转载于:https://www.cnblogs.com/moka/archive/2013/05/14/3078074.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30268071/article/details/96456582

智能推荐

(转载)程序员的十层楼_黄河之水天上来_呵呵的博客-程序员秘密

转载注:请以批判的眼光看待。 那么,你现在是第几层呢? 作者:周伟明   自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。     那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多...

可以嵌入ppt的课堂点名器_智慧校园--嵌入式高清全自动录播子系统_weixin_39743064的博客-程序员秘密

智慧校园全景图 从技术层面上讲,高清全自动录播系统的核心技术由多媒体技术、计算机网络技术、综合视音频编码技术、数字图像处理技术、流媒体技术及自动控制技术等构成,这些技术全面渗透到精品课堂录播系统教学应用和综合管理中。毫无疑问,计算机网络技术是最基础的技术,为其他技术的应用提供了坚实的平台。系统支持跨平台、跨VLAN的网络应用。 系统中的录播主机、跟踪主机均采用嵌入式架构;系统采用模块化设计、高标清...

springboot整合prometheus+grafana实现监控和报警_timedaspect_尛騩的博客-程序员秘密

监控springboot actuator查看端点(endpoints)在项目里导入依赖包&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-actuator&lt;/artifactId&gt;&lt;/dependency&gt;启动项目,访问/actuator,即可看到暴露的端点以及对应的url

Http请求工具-OkHttp用法_小小渔夫的博客-程序员秘密

OKHttp介绍okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。okhttp有自己的官网,官网网址:OKHtt...

iOS Label显示不同颜色和字体_ios label不同颜色_coding_girl.的博客-程序员秘密

开发中,我们经常会遇到一行字,但是显示不同颜色和字体的情况,话不多说,直接上代码。1、显示不同颜色,有两种方式(1)通过 range 来设置NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"点击代表您已阅读并同意用户规则和协议"];[str addAttribute:NSFore

[用户 'sa' 登录失败。原因: 该帐户被禁用]的解决方案_weixin_30597269的博客-程序员秘密

用户 'sa' 登录失败。原因: 该帐户被禁用打开security(安全性) -- logins(登录名) ,右键选中sa,选择properties(属性),点击Status(状态)切换到状态面板,将Login(登录)设置为Enabled(启用)。转载于:https://www.cnblogs.com/xpxu/archive/2010/01/29/1659475.html...

随便推点

漏洞原理——ssrf_ssrf漏洞_y_wh的博客-程序员秘密

一、什么是SSRF1、简单了解SSRF (Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的安全漏洞,一般情况下,SSRF攻击的目标是外网无法访问的内网系统,也正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔绝的内部系统。也就是说可以利用一个网络请求的服务,当作跳板进行攻击。攻击者利用了可访问Web服务器(A)的特定功能 构造恶意payload;攻击者在访问A时,利用A的特定功能构造特殊payload,由A发起对内部

小米小爱音箱Pro8安装app_小米小爱触屏音箱Pro8智能AI音响值得买?买前必读_weixin_39929683的博客-程序员秘密

小米(MI) 小米小爱触屏音箱Pro8智能AI音响,入手怎么样?小编从硬件和软件2个方面,给大家挖一挖细节,有哪些需要您注意的~1、硬件配置:8英寸,ipad mini的尺寸,分辨率1280*800像素,比一般百元手机差点;CPU配置未知,不过可以肯定是不会高到哪去,而且这个是封闭式系统,想过几年不卡估计悬;供电12V/1.5A,没有内置电池,不能随身带,需要随时插电才可用;配置了摄像头,但不能与...

Layui子页面触发父页面方法跳转页面并添加tab列_layui父页面跳转_VUE+.NetCore的博客-程序员秘密

Layui子页面触发父页面方法跳转页面并添加tab列子页面调动父页面方法提示:parent.AddTab(链接,ID,标题); // 该方法名在页面的layui.config外面 父页面实现Layui添加tab方法注意事项//url 跳转链接 // ID 页面layID //title 页面标题function AddTab(url, ID, title) {//ok-tab tab列外的lay-filter="ok-tab" element.tabAdd('o

2020年腾讯C++面试题和答案持续更新中-内附视频讲解(12)_多机多卡训练 面试题_鹏哥C语言的博客-程序员秘密

大家好我是好好学习天天编程的天天一个整天在互联网上种菜和砍柴的程序员~今天继续分享2020年腾讯面试真题2020年腾讯面试真题 一面-2020/3/19自我介绍,为什么转行?讲一下项目怎么优化项目?网络字节序大端小端怎么测?解答:【百度笔试题】简述大小端字节序的概念并写一个小程序检测当前机器的大小端字节序写题斐波那契序列、链表合并,反转new低层实现多态怎么实现mss讲一下应用层传文件流程100字节的文件能否一次性接收gdb怎么用?怎么设置循环断点?2020年腾讯面

Caused By:java.lang.ClassNotFoundException:com.ibm.db2.jcc.DB2Connection_小聂敲代码的博客-程序员秘密

问题背景:中间件采用weblogic,采用db2数据库,项目启动时一直报这个错,导致服务起不来问题分析:一般出现这种问题都是因为jar包找不到或者jar包冲突或者加载先后顺序,不过具体问题还是具体分析吧,解决办法:(1)在weblogic配置的域找到bin目录,找到setDomainEnv.cmd脚本,进行编辑,先找到set SERVER_CLASS=weblogic.Server,在...

自动化软件测试面试常见问题(带答案)!!!内部机密!!随时会删!!!_软件自动化测试面试题_测试猿David的博客-程序员秘密

1、您认为做好测试用例设计工作的关键是什么?白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题2、问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。300个用户在一个客户端上,需要更大的带宽。IP地址的问题,可能需要使用IP

推荐文章

热门文章

相关标签