练手小项目(2)-生活小助手--星座运势查询

上一篇内容

练手小项目(2)-生活小助手

今天星期一。趁着中午的歇息时间把 第二个写出来 星座运势,近期看看极客学院 用聚合数据做了天气预报的视频教程,不好评价他。看他在后面的代码变更那么大,我就知道,后面肯定做不下去,于是。就改代码了。代码变更那么大,有几个人会去理解,还不如我自己写................

先看布局

点击去就是一个spinner 用几个textview显示查询内容   布局有点丑,主要是给别人做功能,UI我就不考虑

关于UI  我还是要贴下代码。假设你有想法就把他美化下呗

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Spinner
        android:id="@+id/constellation_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_marginTop="20dp"
        android:layout_below="@id/constellation_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
 		<TextView
          android:id="@+id/datetime"
          style="@style/TextStyle"
          android:text="时间" />
 		<TextView
          android:id="@+id/name"
          style="@style/TextStyle"
          android:text="星座" />
        <TextView
          android:id="@+id/OFriend"
          style="@style/TextStyle"
          android:text="最佳配偶星座" />
        <TextView
          android:id="@+id/all"
          style="@style/TextStyle"
          android:text="幸运度" />
        <TextView
          android:id="@+id/color"
          style="@style/TextStyle"
          android:text="幸运颜色" />

        <TextView
          android:id="@+id/health"
          style="@style/TextStyle"
          android:text="健康运势" />
        <TextView
          android:id="@+id/love"
          style="@style/TextStyle"
          android:text="爱情运势" />
        <TextView
          android:id="@+id/money"
          style="@style/TextStyle"
          android:text="金钱运势" />
        <TextView
          android:id="@+id/work"
          style="@style/TextStyle"
          android:text="工作运势" />

        <TextView
          android:id="@+id/number"
          style="@style/TextStyle"
          android:text="幸运数字" />
        <TextView
          android:id="@+id/summary"
          style="@style/TextStyle"
          android:text="建议:" />

    </LinearLayout>

</RelativeLayout>

然后看 java代码吧

1.实例化全部控件

	private void initview() {
		spinner = (Spinner) findViewById(R.id.constellation_name);
		datetime=(TextView) findViewById(R.id.datetime);
		name=(TextView) findViewById(R.id.name);
		OFriend=(TextView) findViewById(R.id.OFriend);
		all=(TextView) findViewById(R.id.all);
		color=(TextView) findViewById(R.id.color);
		health=(TextView) findViewById(R.id.health);
		love=(TextView) findViewById(R.id.love);
		money=(TextView) findViewById(R.id.money);
		work=(TextView) findViewById(R.id.work);
		number=(TextView) findViewById(R.id.number);
		summary=(TextView) findViewById(R.id.summary);
	}

2.建立数据元 给spinner 进行填充,

// 建立数据源

String[] mItems = getResources().getStringArray(R.array.book);

数据源在I res/values/arrays  就是12星座

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="book">
        <item >当前没有选择星座</item>
        <item >白羊座</item>
        <item >金牛座</item>
        <item >双子座</item>
        <item >巨蟹座</item>
        <item >狮子座</item>
        <item >处女座</item>
        <item >天枰座</item>
        <item >天蝎座</item>
        <item >射手座</item>
        <item >魔蝎座</item>
        <item >水瓶座</item>
        <item >双鱼座</item>
    </string-array>

</resources>

3.数据源有了,就要定义 适配器了  spainner 的使用方法就是一个mvc   记住就可以

由于数据不多 所以就用arrayadapter

// 建立Adapter而且绑定数据源
        ArrayAdapter<String> _Adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
        //绑定 Adapter到控件
        spinner.setAdapter(_Adapter);  

4.对于spinnner点击事件处理 依据点击的条目 进行联网操作。json解析 然后展示  看所有代码吧 我在代码中解释

package com.example.helper;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.json.JSONException;
import org.json.JSONObject;

import com.example.helper.utils.HttpUtils;
import com.example.helper.utils.HttpUtils.OnNetWorkResponse;
import com.example.helper.utils.UrlApi;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class ConstellationSearch extends Activity {
	private Spinner spinner;
	private TextView datetime,name,OFriend,all,color,health,love,money,work,number,summary;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.constellation_search);
		initview();
		// 建立数据源
		String[] mItems = getResources().getStringArray(R.array.book);
		// 建立Adapter而且绑定数据源
		ArrayAdapter<String> _Adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
		//绑定 Adapter到控件
		spinner.setAdapter(_Adapter);
		spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			private String encode;
			@Override
			public void onNothingSelected(AdapterView<?> parent) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				 String str=parent.getItemAtPosition(position).toString();
				    Toast.makeText(ConstellationSearch.this, "你点击的是:"+str, 2000).show();
				    try {
				    	//此数据要求url编码所以我们转一下
						encode = URLEncoder.encode(str,"utf-8");
					} catch (UnsupportedEncodingException e) {
						e.printStackTrace();
					}
				    	//拼接字符串 成url进行联网
				    String path=UrlApi.TWO+encode+UrlApi.TWO_ITEM;
				    HttpUtils.RequestNetWork(path, new OnNetWorkResponse() {

						@Override
						public void ok(String response) {
							try {
								JSONObject o1=new JSONObject(response);
								int error_code = o1.getInt("error_code");
								System.out.println(error_code);
								if (error_code==0) {
									/*json格式
									 * {
										    "error_code": 0,
										    "reason": "Success",
										    "result": {
										        "OFriend": "狮子座",
										        "all": "61%",
										        "color": "橙",
										        "date": "1416199893",
										        "datetime": "2014-11-17",
										        "health": "82%",
										        "love": "59%",
										        "money": "67%",
										        "name": "双子座",
										        "number": "2",
										        "summary": "今天。工作上,你的任务要是想要提前完毕的话。得须要身边的同事多多配合才行;感情上。不要吝啬于表达自己的感情。要让对方体验到你的真心才行。健康上,状态不错;財运上,下降。

",
										        "work": "55%"
										    }
										}
									 *
									 * */
									//json解析很easy 我简单 讲一下  第一个是大括号 SO  jsonobject  然后看下我们要的数据在哪,result
									// 后面也是括号 getStringObject
									JSONObject o2 = o1.getJSONObject("result");
									datetime.setText("当前时间: "+o2.getString("datetime"));
									name.setText("你选择星座是: "+o2.getString("name"));
									OFriend.setText("最佳配偶星座: "+o2.getString("OFriend"));
									all.setText("幸运度: "+o2.getString("all"));
									color.setText("幸运色"+o2.getString("color"));
									health.setText("健康指数: "+o2.getString("health"));
									love.setText("爱情指数: "+o2.getString("love"));
									money.setText("金钱指数: "+o2.getString("money"));
									work.setText("升职指数: "+o2.getString("work"));
									number.setText("幸运数字: "+o2.getString("number"));
									summary.setText("建议: "+o2.getString("summary"));
								}
							} catch (JSONException e) {
								e.printStackTrace();
							}
						}

						@Override
						public void error(String error) {

						}
					});
			}
		});
	}

	private void initview() {
		spinner = (Spinner) findViewById(R.id.constellation_name);
		datetime=(TextView) findViewById(R.id.datetime);
		name=(TextView) findViewById(R.id.name);
		OFriend=(TextView) findViewById(R.id.OFriend);
		all=(TextView) findViewById(R.id.all);
		color=(TextView) findViewById(R.id.color);
		health=(TextView) findViewById(R.id.health);
		love=(TextView) findViewById(R.id.love);
		money=(TextView) findViewById(R.id.money);
		work=(TextView) findViewById(R.id.work);
		number=(TextView) findViewById(R.id.number);
		summary=(TextView) findViewById(R.id.summary);
	}
}

点击下载源代码

时间: 2024-08-28 20:07:01

练手小项目(2)-生活小助手--星座运势查询的相关文章

java客房管理小项目,适合java小白练手的项目!

java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我! 祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!共有5层,每层10间客房,以数字101--509标示:具有入住,退房,搜索,退出四个简单功能: public class Hotel { static final int floor = 5; static fina

scala练手之数字转汉字小工具

输入数字,转换成汉字,在统计数据量时很好用,而输入数字转成大写汉字,可以用于填写收据报销单哦 下载链接 http://files.cnblogs.com/files/starwater/toChinese.part1.rar http://files.cnblogs.com/files/starwater/toChinese.part2.rar 效果图如下: 直接上代码 object toChinese { def toChinese(number: Long) = { var count =

个人小项目——四则运算器小游戏

实现一个能自动生成小学四则运算的程序.本程序用Java语言实现.本程序参考了原文:http://www.cnblogs.com/896702797-qw/p/5282480.html包括如下功能: 1.根据菜单选择四种基本运算的类型,然后生成100以内的两个整数的基本运算式. 2.除一些基本功能我扩展实现了一个倒计时功能. 源码如下: 1 package pro1; 2 3 import java.util.Random; 4 import java.util.Scanner; 5 6 publ

一:练手的项目简介(node express vue elementui axios)

一:项目基本构造 项目一共有 16 个页面,是一个电商网销项目,自己在网上的某网上找的一个要做的网站的设计图: 页面主要包括:  登录页 -- 注册页 -- 首页 -- 产品列表页 -- 产品详情页 -- 会员中心页 -- 我的购物车页 -- 支付页 -- 支付成功页 -- 支付失败页 -- 评价页 -- 评价详情页 -- 我的订单页 -- 订单详情页 -- 确认订单页 -- 收货地址列表页: 后端技术: node express  mongo: 前端技术:vue-cli  elementui 

练手小项目(2)-生活小助手--周公解梦

第一篇 练手小项目(2)-生活小助手--身份证查询 第二篇 练手小项目(2)-生活小助手--星座运势查询 我在想就是第三个药品查询要不要写出来,因为布局还在讨论用什么展示,因为药品有很多展示,我也不知道用什么展示. 这是一个很纠结的事情 我就先写第四个吧 周公解梦 其中代码有点错误我想用for循环进行判断返回数据有几个 但是总是失败,如果有看本篇贴子,解决了,给我留个言,在这篇帖子我只显示一个结果 布局跟简单的说 一个Edittext 获取数据,然后button进行数据提取发送到服务器 返回的数

【开源】前端练手笔记,Chrome扩展应用程序(html+CSS+JS) (1)

项目名称:github-notification 项目地址:https://github.com/wuchangming/github-notification 说明:本人打算抽时间学习前端(html + css +js),选择Chrome扩展应用程序制作一个简单练手的项目.避免中途放弃在此立字为证! 有一起的兄弟吗? 项目简介:一款开源的,关于Github通知和监控个人项目的Chrome扩展应用程序(其实就是想监控下github上某个项目的star数,fork数等等.当然大家有什么想法也可以一

java客房管理小项目,适合小白练手

java客房管理小项目这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全!喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我!共有5层,每层10间客房,以数字101--509标示:具有入住,退房,搜索,退出四个简单功能:public class Hotel {static final int floor = 5;static final int order = 10;private static int countFlo

vue练手小项目--眼镜在线试戴

最近看到了一个眼镜在线试戴小项目使用纯js手写的,本人刚学习vue.js没多久,便试试用vue做做看了,还没完善. 其中包括初始图片加载,使用keywords查找,父子组件之间传递信息,子组件之间传递信息 1. 使用keywords查找 1.1 给每个li添加初始data smallImg: [ { keywords: "椭圆脸", src: "images/model_1.jpg", addClass: false }, { keywords: "圆形脸

java练手小项目!要想java学得好,练手项目不可少!

Java小项目,实现电影院的自动售票机 运行界面如下 2.类的设计 该系统中必须包括两个类,类名及属性方法设置如下. 电影类(Movie) ²  名称(name) ²  上映日期(date) ²  票价(price) 售票机类(TicketSell) ²  方法:查询所有电影信息  查询指定电影票价以及上映日期  购买电影票 3.具体要求及推荐实现步骤 1.创建电影类 2.创建售票机类 3.开发售票机类初始化电影方法,查询方法和买票方法. 1)初始化方法initial():  初始化5个电影对象