- 浏览: 342938 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (139)
- Java (49)
- C# (23)
- 软件实施 (1)
- Mysql (8)
- Struts2&1.x (15)
- DWR (0)
- Javascript (7)
- Effective Java (8)
- Oracle (0)
- SqlServer (1)
- Spring (6)
- 数据结构 (2)
- 设计模式 (0)
- Hibernate (6)
- c++ (2)
- Qt (1)
- 瞎侃几句 (5)
- Openbravo2.5实施记录 (3)
- 工作总结 (6)
- 软件测试 (3)
- css (1)
- Android (13)
- Object-c (0)
- Html5 (1)
- jshoper开源项目 (34)
- Windows Phone (1)
- activiti (2)
最新评论
-
yzlseu:
没有思考,就是抄的,垃圾文章
Activiti5用户手册---Message Event Definitions -
yy756127197:
<timeDuration>P10D</ti ...
Activiti5用户手册---Events---Timer Event Definitions -
云端帕帕:
Activiti5用户手册---Events---Timer Event Definitions -
raychiong:
lz现在哪里高就呢?
记录一次高德软件面试经历 -
sdywcd:
water_quite 写道sdywcd 写道water_qu ...
jshoper3x在线商城系统更新说明及未来开发计划
这几天在考虑做一个android程序,所以决定把这个android程序定义成一个商城商品浏览的手机版本。
手机端:版本采用的是android2.3.3
服务器端:用ssh2实现的一个商城系统。可支持多用户在同一个系统中发布商品。
想要实现的功能:用户通过手机客户端浏览商城系统的商品
服务器端只需要传输json格式的字符串到页面即可。
实现如下
/** * 查询所有商城数据 * @return * @throws IOException */ public void findAllJshopbasicInfoLogoforAndroid() throws IOException{ int currentPage=page; int lineSize=12; String state="1"; String url="http://192.168.1.105/Uploads/"; beanlist=this.getJshopbasicinfotserviceimpl().findAllJshopbasicInfoNoParam(currentPage, lineSize, state); if(beanlist!=null){ StringBuilder json=new StringBuilder(); for(Iterator it=beanlist.iterator();it.hasNext();){ JshopbasicInfoT jbi=(JshopbasicInfoT)it.next(); String []strs=jbi.getSitelogo().split(","); jbi.setSitelogo(url+strs[0]); json.append('{'); json.append("\"sitelogo\":\"").append(jbi.getSitelogo()).append("\","); json.append("\"creatorid\":\"").append(jbi.getCreatorid()).append("\""); json.append('}').append('-'); } json.deleteCharAt(json.length()-1); this.setJsonstr(json.toString()); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); out.write(this.getJsonstr()); out.flush(); out.close(); } }
说明:1,这里是action方法的实现。这里的action继承了ActionSupport类 实现了
ServletRequestAware, ServletResponseAware接口
2,方法通过分页获取了商家店铺集合,并把店铺logo的url地址和用户id输出。这是可以同时输出多个店铺。用了‘-’做了分割。
3,传输logo和用户id的目的是再android中我用了GirdView来显示logo。并需要通过点击logo进入店铺商品列表。
4,在struts.xml中得配置
<!-- android gor find jshop --> <action name="findAllJshopbasicInfoLogoforAndroid" class="AndroidJshopbasicInfoAction" method="findAllJshopbasicInfoLogoforAndroid"> </action>
手机端实现:实际上是手机端发送了一个http请求给服务器,方才执行了上面的代码片段中得方法。
手机端如何发送http请求就不说了。说下如何在GridView中显示图片和点击相应的事件吧
boutiquesjsonstr=this.queryBoutiquesForJshopbasicInfoList(); if(boutiquesjsonstr==null){ return; }else{ String []strs=boutiquesjsonstr.split("-"); try { for(int i=0;i<strs.length;i++){ JSONObject jo=new JSONObject(strs[i].toString()); String sitelogo=jo.getString("sitelogo"); String creatorid=jo.getString("creatorid"); if(sitelogo.indexOf(",")<0){ sitelogolist.add(sitelogo.toString()); creatoridlist.add(creatorid.toString()); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } gv.setAdapter(new ImageAdapter(this));
以上代码是对服务器的json数据的处理,我把数据保存在了一个list中。并把数据传送给GridView的适配器用来显示。
public class ImageAdapter extends BaseAdapter{ private Context mContext; public ImageAdapter(Context mContext) { this.mContext = mContext; } @Override public int getCount() { // TODO Auto-generated method stub return sitelogolist.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater=LayoutInflater.from(JshopActivityShopList.this); View v=null; ImageView imageView=new ImageView(this.mContext); if(convertView==null){ v=inflater.inflate(R.layout.jshop_activity_imageview, null); }else{ v=(View)convertView; } imageView=(ImageView)v.findViewById(R.id.imageViewForshoplist); try{ URL url=new URL(sitelogolist.get(position).toString()); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5*1000); InputStream in=conn.getInputStream(); Bitmap bm=BitmapFactory.decodeStream(in); in.close(); imageView.setImageBitmap(bm); }catch(Exception e){ e.printStackTrace(); } imageView.setPadding(8, 8, 8, 8); imageView.setAdjustViewBounds(false); return v; } }
以上代码说了名:1,如何显示图片呢?手机端显示网络图片是先下载下来显示的。所以我们使用了URI建立连接并下载了图片。
2,imageAdapter继承了baseAdapter,其中的方法getCount是可以控制getView方法调用次数的。这里getCount是我保存图片url集合的list.size(),这样我有几个图片也就循环几次view并显示了。
3,position这个变量其实是gridview的下标,可以这么理解,当你点击gridview的时候,怎么知道是点击的第几个呢?这个position就是你点击的那个对象的标示。如果我点击了第一个logo其实就是position是等于0的。
那gridview的点击事件是什么呢?
class ItemClickListener implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //int a=(Integer) arg0.getItemAtPosition(arg2); String creatorid=creatoridlist.get(arg2).toString(); Bundle data=new Bundle(); data.putString("creatorid", creatorid); Intent intent = new Intent(JshopActivityShopList.this,JshopActivityGoodsList.class); intent.putExtras(data); startActivity(intent); } }
代码说明:1,必须使用的是OnItemClick()而不是一般的Click();
2,这里我需要实现的是点击了logo后执行获取商品列表的方法,所以我必须知道这个商铺是谁的才能拿到正确的商品,所以这里我获取了creatorid即用户id,用户id也被我放在了list中,这里用户id的list的下标正好可以通过position这个变量来标示,也就能得到正确的用户id了。
3,android中传递变量可以用Bundle这个类,具体的这里不说了。
4,对了,这个点击事件的坚挺必须在onCreate的时候申明下:
gv.setOnItemClickListener(new ItemClickListener());
好了。基本思路是这样的。
- 实现的部分代码.zip (2.4 KB)
- 下载次数: 63
发表评论
-
android按需加载你的界面
2014-05-08 09:18 1237按需加载你的界面 有时候你的布局中可能存在一些不常 ... -
如何判断android activity是否运行
2014-05-05 17:19 7901如何判断android activity是否运行 ... -
看了一些git教程后自己的总结
2014-04-24 12:45 1305平时在维护开源程序 ... -
android在布局中动态增加view时的层级控制
2014-03-24 14:40 33914问题:我们有时候希望动态的在android的布局中增加vi ... -
android 在配置文件中指定上级activity
2013-12-07 23:47 1417今天在看sdk doc时发现可以在配置文件中定义一个acti ... -
android button 点击事件
2013-12-06 11:49 1123<Button android:layou ... -
我的android记录
2013-06-11 23:54 01,listview获取选择的items选中状态(例如lis ... -
android 中checkbox radiobutton文字间间距处理
2013-06-09 13:05 4829情况:ui设计要求必须让checkbox或者radiobut ... -
如何在eclipse adt中查看手机中应用的ui布局
2013-06-04 20:56 5843情况:忽然想查下怎么看那些漂亮的android ui布局 ... -
在eclipse 4.2中配置tomcat插件并修改jvm启动参数
2013-06-04 12:31 4717情况:今天在运行项目的时候发现需要一个比较大的内存才能够完成 ... -
搜寻了关于android推送资料后的一些思考
2013-04-11 22:23 1637其实我们要用推送服务的情况还挺多: 1,站内性 其实是可以 ... -
java中集合的父类collection的那些事
2013-04-10 18:02 01,collection是所有集合的父类 2,Li ... -
有那些设计模式,观察者模式是什么
2013-04-09 15:41 0设计模式还挺多的。可以分成如下几类 创建模式: ... -
写一个线程安全的单例模式
2013-04-08 23:30 1685谢谢 http://blog.sina.com.cn/s/b ... -
ThreadLocale是什么
2013-04-07 21:53 1068维持线程封闭性的一种更规范的方法是用ThreadLocal, ... -
如何保证线程安全 实现线程安全有那些方法
2013-04-07 20:45 73521,如何保证线程安全 不在线程之间共享状态变量 将状态 ... -
final搞不清的那些事
2013-04-07 19:44 894面试老是问final,finally ... -
java 拦截器和过滤器区别(转载)
2013-04-06 21:21 19211、拦截器是基于java的反射机制的,而过滤器是基于函数回 ... -
struts默认提供了那些拦截器
2013-04-06 21:07 1220如下是struts-default.xml中的部分内容,主 ... -
spring aop的实现原型模拟
2013-04-06 20:59 989我们都知道spring的配置文件中可以进行声明式事务管理,其 ...
相关推荐
黑马程序员——Android移动开发源码
这个示例应用程序可以作为 Android 应用程序开发的良好起点。 Tools 目录 包含所有用于构建 Android 应用程序的命令行工具。最常用、最有用的工具是 adb 实用程序(Android Debug Bridge)。 usb_driver 该目录包含...
如果大家有时间可以和我一起开发,一个人精力毕竟有限,如果你是个初学者,做完这个项目7k工作应该不成问题! 本项目仅供学习参考,不可作为商业用途,违权必究。 新版本更新后会继续开放给大家,详情关注播客。
俗话说,“熟读唐诗三百首,不会作诗也会吟”。最近收集了很多Android的示例代码,从这些代码的阅读和实验中学习... 本文是这个系列的第一篇,目标是Android自带的一个范例程序:记事本,将分为四篇文章进行详细介绍。
创建 第一个Android 工程 1)启动 Eclipse,菜单栏选择 File -> New -> Project…。 2)在 New Project 窗口的列表中找到 Android,选择 Android Application Project。 3)输入前三项项目信息,之后选项保持默认...
android程序编写及调试新手入门 大家一起学Android(Windows篇) android入门与提高必看指南 Android入门逆引手册 Android开发指南中文版、创意设计 【Android系统原理与开发要点详解】/底层 应用 框架 Android核心...
《Android应用开发I》实验指导书 计算机科学及技术系 目 录 实验一 :第一个应用程序 3 实验二 :基本控件 1 实验三 :高级控件 4 实验四 :菜单和对话框 7 实验五 :数据存储 8 实验六 :后台处理及获取网络数据 9 ...
2. 尽量少用模态对话框(Model dialog),如果Dialog.setCancellable(false),就变成了一个模态对话框,除了程序内部把其Dismiss,否则按什么键都无法将其取消。这是极差的用户体验,对话框本身就是一种干扰,再无法...
我们首先安装开发环境,然后你将运行你的第一个 Kotlin 应用,并了解 Kotlin 中程序流程是如何工作的。然后我们将讨论变量和数学运算以及优先级。接着我们将讨论逻辑和决策制定,然后是循环。然后我们将讨论如何处理...
不好意思哦,上一篇Android自学开发第六篇代码控制界面挖了个坑,如果运行不起来的同学,请注意查看本篇文章。 Android Project的灵魂大师AndroidManifest.xml终于要登场了,我们可以亲切的称呼它为AM文件,认识和...
Direct3D研究院之创建第一个DirectX3D项目(一) NGUI研究院之开始学习制作第一个例子(一) Objective-C研究院之基础语法(一) Ruby On Rails研究院之初识Rails(一) Three20研究院之构建开发环境与Hello...
我的第一个Android开发实验,所以不要指望这里有什么不错的。 要完全成为一个正确的Android应用程序,需要做一些工作。 本质上,这是一个小乐器调音器和一个小游戏,可以练习音阶,包括反馈。 入门 将ANDROID_HOME...
dNote 是 Digutsoft 开发的一款简单的笔记应用程序。 这包括单行笔记、多行笔记、Android Wear 上的笔记。 dNote 简单但功能强大,所以写笔记和管理笔记非常方便。 您可以创建自己的类别来保存笔记,并且可以轻松...
第1版 (2012年1月1日) 丛书名: 移动互联应用开发系列 平装:374页 内容简介: 《Android 4.0网络编程详解》对Android 4.0网络编程中的XML形式,JSON操作,需要掌握的HTTP知识,数据下载/上传,Socket编程,浏览器...
一年前,我开始制作一个以我的好朋友命名的应用程序。 设计师给了我一张设计图,设计是这样的: 我发现实现这种效果非常困难,因为您必须非常熟悉 Android 触控系统。 那一刻真是超出了我的能力,我也注意到没有这样...
热门电影,第1阶段我提交给Google / Udacity的“关联Android开发人员快速通道”课程中第一个项目的意见书。笔记要运行此应用,您需要在AndroidManifest.xml的以下部分中替换“此处的API密钥”- <meta-data ...
Android的原意为"机器人",Google将Android的标志设计为绿色机器人,不但表达了 字面意思,而且表达Android系统是一个符合环保概念、轻薄短小、功能强大的移动系统 ,意在使其成为第一个真正为手机打造的开放并且...
使用 Delphi 一次性开发 Android/iOS 应用程序提供了本书使用的源代码(按照步骤,实践)。 第 1 卷)第 1 部分 - 粉碎基础知识第 2 卷)第 2 部分 - 高级利用(DB、云、3D) 如何从 Delphi 下载 Github 源代码 -
奥丁、维利和维三兄弟被认为是赋予第一批人类阿斯克和恩布拉生命的神。 Vé 是给他们演讲和其他能力的人。 Vé 是开源软件,在 GPL 许可下发布,这意味着您可以免费使用它,用于个人或其他目的。 您