`

第一个Android程序开发笔记

阅读更多

这几天在考虑做一个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());

 好了。基本思路是这样的。

分享到:
评论

相关推荐

    android 开发笔记

    基础入门一可能涵盖Android开发环境的搭建,包括安装Android Studio、配置Java开发环境、理解Android SDK及其组件,以及创建第一个Hello World应用。开发者会学习到AndroidManifest.xml的重要性,它是每个Android...

    第一行代码 android学习笔记 完整版

    本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中系统地介绍了Android的基本概念和开发技术。 一、Android系统架构 Android系统架构是Android开发的基础,系统架构包括Linux Kernel、...

    全网最全Android开发笔记.zip

    【Android开发笔记】是一部全面覆盖Android开发核心技术与实践的综合资料,旨在帮助开发者从零基础到精通,深入了解Android系统的工作原理以及应用开发的各种技巧。笔记包含了大量的实例代码、技术解析和实战经验,...

    [电子书][Android]Android开发教程笔记完全版.zip

    在【描述】中提到,这份教程适合新手小白,意味着它会从零开始,详细讲解如何安装和配置Android Studio,创建第一个“Hello, World!”应用程序,逐步引导读者理解Android应用的基本架构和生命周期。对于初学者来说,...

    Android开发教程笔记完全版.zip

    这份"Android开发教程笔记完全版.zip"包含了一份详细的Android编程学习资源,可能是由一位经验丰富的开发者或教育者整理而成,旨在帮助初学者和有经验的开发者深入理解Android应用开发。 **Android系统架构** ...

    Android Studio 学习笔记-新手入门-(1)第一个案例

    这篇学习笔记将引导新手入门,通过创建第一个简单的案例来了解Android Studio的基本操作。 首先,让我们了解一下Android Studio的核心功能。它基于IntelliJ IDEA,具备代码自动补全、重构、调试等强大的开发特性。...

    android开发笔记2

    标题“android开发笔记2”表明这是一系列笔记的第二部分,意味着它可能建立在前一版的基础之上,提供更深入或进阶的Android开发知识。对于初学者,这种连续的学习资源能构建完整的知识体系;对于有经验的开发者,它...

    android开发笔记入门级

    这份"android开发笔记入门级"资源,正是为了帮助初学者系统地学习和理解Android应用开发所准备的。它以易懂的方式,逐步引导学习者深入这个充满机遇的领域。 首先,我们要明白Android是一个开源的操作系统,主要...

    Android开发教程笔记完全版.rar

    Android开发是移动应用开发领域的重要组成...通过这份"Android开发教程笔记完全版",你将能够系统地学习Android开发,逐步掌握上述知识点,从而成为一名合格的Android开发者。不断实践和迭代,才能真正精通这一技术。

    android第一行代码笔记

    在学习Android开发的过程中,"第一行代码"往往代表着编程旅程的起点,这本笔记将帮助读者逐步理解并掌握这个过程。 一、Android系统架构 Android系统由Linux内核、库、运行时环境、应用程序框架以及应用程序组成。...

    Android零基础开发教程笔记.doc

    《Android开发教程笔记完全版》是一份面向初学者的详细指南,旨在教授基本的Android编程技能,并逐步引导读者掌握高级的Android应用程序开发概念。这份文档首先介绍了开放手机联盟(Open Handset Alliance,简称OHA...

    新版Android入门开发教程 完整pdf开发笔记

    这份"新版Android入门开发教程 完整pdf开发笔记"涵盖了从零开始学习Android应用开发所需的基础知识和实践技能。 Android是谷歌公司主导的开源移动操作系统,广泛应用于智能手机和平板电脑。学习Android开发意味着你...

    Android 应用开发学习笔记(全,from hitwh)

    Android 开发环境搭建是 Android 应用开发的第一步。开发者需要安装 Android Studio、Android SDK、Java JDK 等工具,了解 Android 项目的结构和目录。 第 3 章 Android 项目的创建和运行 Android 项目的创建和...

    Android开发笔记

    《Android开发笔记》是一份详实的Android应用开发学习资料,包含了从环境搭建到UI编程、布局管理和Dalvik ADB等多个关键领域的知识点。这些笔记旨在帮助开发者系统地掌握Android开发的核心技能,逐步成长为一名专业...

    Android学习笔记三:第一个应用程序的扩充

    在这个"Android学习笔记三:第一个应用程序的扩充"中,我们将深入探讨如何扩展这个基础,以更好地理解和掌握Android应用开发的核心概念。 首先,Android Studio作为Google官方推荐的集成开发环境(IDE),是Android...

    李兴华Android开发实战经典-PPT课件-笔记

    1. **Android环境搭建**:首先,课程会介绍如何安装和配置Android Studio,这是Android开发的官方集成开发环境(IDE),以及如何设置SDK和AVD管理器,以便进行模拟器或物理设备的开发测试。 2. **Android基础知识**...

    新版Android开发教程及笔记-完整版

    新版Android开发教程及笔记将涵盖Android系统的基本架构、应用程序生命周期管理以及UI设计等核心概念。 1. **Android系统架构**:Android系统分为应用层、应用框架层、系统运行库层和Linux内核层。开发者主要在应用...

    Android Studio开发笔记一Android Studio安装及环境配置教程

    2. 运行下载的Android Studio安装包,按照提示依次点击"Next",默认全选组件,然后同意许可协议,选择安装路径,确保第一个组件安装在“studio”文件夹,第二个组件安装在“sdk”文件夹。 3. 安装过程中保持耐心,...

Global site tag (gtag.js) - Google Analytics