正式写之前,先发点感慨,在这里mark下:毕业到现在正好一年整,来杭州正好一年,在公司自己学到了很多东西,虽然有时我们有点有组织,无纪律。但是每人都有颗上进的心,有收获,有伤感(不细说,你懂得)。谨以此篇作为在杭州写的最后一篇Blong,留作纪念,下个星期正式进驻魔都,等着我的会是什么那,祝福自己在魔都各方面都好的发展。加油。。。
这个小项目的就写到这里,就整体功能来说,还有一小部分,感兴趣的童鞋可以参照李刚老师的Android讲义将剩下的补充完整。因为这是个人的练手的项目,必然有很多不足,如果有什么问题,欢迎童鞋一起交流。
管理物品模块:
1. 管理拍卖物品:
其对应的Servlet: ViewOwnerItemServlet:
返回的JSON对象类似为:
[{"id":2,"endtime":"2012-04-02","initPrice":210,"addtime":"2012-03-21","itemName":"display card","bids":[],"maxPrice":210,"itemRemark":"Old video card","itemDesc":"Old video card, still can use","kind":"computer hardware"},{"id":3,"endtime":"2012-03-28","initPrice":21000,"addtime":"2012-03-21","itemName":"The
old house","bids":[],"maxPrice":25000,"itemRemark":"Old house","itemDesc":"40 years old house","kind":"house property"}]
2.查看自己的拍卖物品对应的布局文件:manage_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center"
android:background="@drawable/bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/sub_title_margin"
>
<LinearLayout
android:orientation="vertical"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="12px"
>
<TextView
android:text="@string/manage_item"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/bnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/add_item"
/>
</LinearLayout>
<Button
android:id="@+id/bn_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/label_font_size"
android:background="@drawable/home"
/>
</LinearLayout>
<!-- 显示物品列表的ListView -->
<ListView
android:id="@+id/itemList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
3.管理物品对应的Activity为:MangerItem.java
package com.infy.auction.client;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.infy.auction.client.util.DialogUtil;
import com.infy.auction.client.util.HttpUtil;
import com.infy.auction.client.util.JSONArrayAdapter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class ManageItem extends Activity{
Button bnHome;
Button bnAdd;
ListView itemList;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.manage_item);
//获取界面上的组件
bnHome = (Button)findViewById(R.id.bn_home);
bnAdd = (Button)findViewById(R.id.bnAdd);
itemList = (ListView)findViewById(R.id.itemList);
//添加按钮事件监听器
bnHome.setOnClickListener(new FinishListener(this));
bnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//增加拍卖的物品
Intent intent = new Intent(ManageItem.this, AddItem.class);
startActivity(intent);
}
});
//定义发送的URL
String url = HttpUtil.BASE_URL +"ViewOwnerItemServlet";
try{
//向指定的URL发送请求
JSONArray jsonArray = new JSONArray(HttpUtil.getRequest(url));
//将服务器响应包装成Adapter
JSONArrayAdapter adapter = new JSONArrayAdapter(ManageItem.this, jsonArray, "itemName", true);
itemList.setAdapter(adapter);
}catch(Exception e){
DialogUtil.showDialog(this, "服务器响应异常,请稍后再试!", false);
e.printStackTrace();
}
itemList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int postion,
long id) {
// TODO Auto-generated method stub
//加载详细的清单Item
viewItemInBid(postion);
}
});
}
private void viewItemInBid(int position){
//加载detail_in_bid.xml布局
View detailView = getLayoutInflater().inflate(R.layout.detail_in_bid, null);
//获取detail_in_bid界面中的文本框
EditText itemName =(EditText)detailView.findViewById(R.id.itemName);
EditText itemKind = (EditText)detailView.findViewById(R.id.itemKind);
EditText maxPrice = (EditText)detailView.findViewById(R.id.maxPrice);
EditText initPrice = (EditText)detailView.findViewById(R.id.initPrice);
EditText endTime = (EditText)detailView.findViewById(R.id.endTime);
EditText itemRemark = (EditText)detailView.findViewById(R.id.itemRemark);
//获取被单击列表项的所包装的JSONObject
JSONObject jsonObject = (JSONObject)itemList.getAdapter().getItem(position);
try{
//通过文本框显示物品详情
itemName.setText(jsonObject.getString("itemName"));
itemKind.setText(jsonObject.getString("kind"));
maxPrice.setText(jsonObject.getString("maxPrice"));
itemRemark.setText(jsonObject.getString("itemDesc"));
initPrice.setText(jsonObject.getString("initPrice"));
endTime.setText(jsonObject.getString("endtime"));
}catch(JSONException e){
e.printStackTrace();
}
DialogUtil.showDialog(ManageItem.this, detailView);
}
}
4.添加拍卖物品的Servlet:对应的服务器端的Servlet;AddItemServlet.java
5.添加拍卖物品:add_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add_item_title"
android:textSize="@dimen/label_font_size"
android:gravity="center"
android:padding="@dimen/title_padding"
android:textColor="@color/white"
/>
<!-- 输入物品名称 -->
<TableRow>
<TextView
android:text="@string/item_name"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/itemName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<!-- 输入物品描述 -->
<TableRow>
<TextView
android:text="@string/item_desc"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/itemDesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<!-- 输入物品的备注行 -->
<TableRow>
<TextView
android:text="@string/remark"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/itemRemark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<!-- 输入起拍的价格 -->
<TableRow>
<TextView
android:text="@string/init_price"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/initPrice"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<!-- 选择有效地时间 -->
<TableRow>
<TextView
android:text="@string/avail_time"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Spinner
android:id="@+id/availTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/availTime"
/>
</TableRow>
<!-- 选择物品种类 -->
<TableRow>
<TextView
android:text="@string/item_kind"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Spinner
android:id="@+id/itemKind"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<!-- 定义按钮 -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<Button
android:id="@+id/bnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
/>
<Button
android:id="@+id/bnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
/>
</LinearLayout>
</TableLayout>
6.添加物品的Activity:AddItem.java
package com.infy.auction.client;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import com.infy.auction.client.util.DialogUtil;
import com.infy.auction.client.util.HttpUtil;
import com.infy.auction.client.util.JSONArrayAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
public class AddItem extends Activity {
private static final String TAG = "AddItem";
EditText itemNmae, itemDesc, itemRemark, initPrice;
Spinner itemKind, avaiTime;
Button bnAdd, bnCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.add_item);
// 获取界面的组件
itemNmae = (EditText) findViewById(R.id.itemName);
itemDesc = (EditText) findViewById(R.id.itemDesc);
itemRemark = (EditText) findViewById(R.id.itemRemark);
initPrice = (EditText) findViewById(R.id.initPrice);
itemKind = (Spinner) findViewById(R.id.itemKind);
avaiTime = (Spinner) findViewById(R.id.availTime);
// 定义发送请求的地址,获得物品种类的数量
String url = HttpUtil.BASE_URL + "ViewKindServlet";
JSONArray jsonArray = null;
try {
jsonArray = new JSONArray(HttpUtil.getRequest(url));
Log.i(TAG, "jsonArray-->" + jsonArray.toString());
} catch (Exception e1) {
e1.printStackTrace();
}
// 将JSonArray包装成Adapter
JSONArrayAdapter adapter = new JSONArrayAdapter(AddItem.this,
jsonArray, "kindName", false);
// 显示品种物类的列表
itemKind.setAdapter(adapter);
// 获得界面中的两个按钮
bnAdd = (Button) findViewById(R.id.bnAdd);
bnCancel = (Button) findViewById(R.id.bnCancel);
// 添加按钮的监听器事件
bnCancel.setOnClickListener(new FinishListener(this));
bnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 进行输入的校验
if (validate()) {
// 获取用户输入的物品名和物品的描述信息等
String name = itemNmae.getText().toString().trim();
String desc = itemDesc.getText().toString().trim();
String remark = itemRemark.getText().toString().trim();
String price = initPrice.getText().toString().trim();
JSONObject kind = (JSONObject) itemKind.getSelectedItem();
int avail = avaiTime.getSelectedItemPosition();
// 根据用户选择有效时间选项,指定实际的 有效时间
switch (avail) {
case 5:
avail = 7;
break;
case 6:
avail = 30;
break;
default:
avail += 1;
break;
}
try {
// 添加物品
String result = addItem(name, desc, remark, price, kind
.getInt("id"), avail);
// 显示对话框
DialogUtil.showDialog(AddItem.this, result, true);
} catch (Exception e) {
DialogUtil.showDialog(AddItem.this, "服务器异常,请稍后再试!",
false);
e.printStackTrace();
}
}
}
});
}
// 对输入的物品名和起拍价格进行检验
private boolean validate() {
String name = itemNmae.getText().toString().trim();
if (name.equals("")) {
DialogUtil.showDialog(this, "物品名称是必须要填的!", false);
return false;
}
String price = initPrice.getText().toString().trim();
if (price.equals("")) {
DialogUtil.showDialog(this, "起拍价格是必须要填的!", false);
return false;
}
try {
// 尝试把起拍价格转化为浮点数
Double.parseDouble(price);
} catch (NumberFormatException e) {
DialogUtil.showDialog(this, "起拍价格必须是数值!", false);
return false;
}
return true;
}
private String addItem(String name, String desc, String remark,
String initPrice, int kindId, int availTime) throws Exception {
// 使用Map封装请求参数
Map<String, String> map = new HashMap<String, String>();
map.put("itemName", name);
map.put("itemDesc", desc);
map.put("itemRemark", remark);
map.put("initPrice", initPrice);
map.put("kindId", kindId + "");
map.put("availTime", availTime + "");
// 发送请求的URL
String url = HttpUtil.BASE_URL + "AddItemServlet";
return HttpUtil.postRequest(url, map);
}
}
7.效果图:
分享到:
相关推荐
NULL 博文链接:https://tianfeng701.iteye.com/blog/1555504
为此,“职场大菠菜”携手"指尖疯教育"重磅推出《安卓开发实战免费微课》系列!91集微课,足以让您从咿呀学语的菜鸟成功晋级内功深厚的高手。 微课也要有力量,免费也要有匠心!从PPT课件的高颜值梳妆,到产品制作...
指尖疯:巅疯上的大学识,小移动 相信术业要专攻,相信小而美理念,所以专注ANDROID产业链 相信教育优生活,相信互联网思维,所以专注在线教育生态圈 相信疯狂成就未来,相信学习造就快乐,所以我们是在线教育的...
指尖疯Android4.4视频第1集课件:ANDROID简介及开发环境 持续更新中,敬请关注,谢谢!
不过Service可真为Android任劳任怨且从不邀功的劳模!只干活不显摆,只付出不求回报的幕后英雄。如果你设计出的APP受到了用户的褒奖和称赞,这些称赞多是集中在用户界面和Activity上面,从来没有眷顾过Service,因为...
广播,这个诞生于1906年的科技产品,持续...Android通过广播机制,能够让订阅者接受到想听到的广播,并进行进一步的处理和操作。如果你想在虚拟的android世界中创建属于你自己的电台广播,那么就赶紧点击本集视频观看吧
上集给大家带来了android的面子activity的介绍,不知各位看官掌握怎样了,这集隆重登场的Fragment其实和Activity有着千丝万缕的联系。Fragment让界面的创建更加灵活和多变,且复用性得到进一步的提升。疯兄认为,一...
指尖疯:巅疯上的大学识,小移动 相信术业要专攻,相信小而美理念,所以专注ANDROID产业链 相信教育优生活,相信互联网思维,所以专注在线教育生态圈 相信疯狂成就未来,相信学习造就快乐,所以我们是在线教育的...
SQLite是专属于android的一个非常轻量级的数据库,之所以加上非常,是因为表面上是数据库,背后还是以文件方式存储的,没办法,目前手机功能再强大相对PC也很有限,疯兄自然希望有朝一日能够在手机上运行mySQL甚至...
指尖疯Android4.4视频第2集课件:视图与布局 持续更新,敬请关注,谢谢!
这是指尖笔尖检测Android Demo,可实时检测指尖笔尖,支持跟踪检测,检测效果相当好
本集给众位疯子们带来的是选项菜单和上下文菜单。提到菜单,疯兄就忍不住流哈喇子,中华美食,博大精深,这不舌尖上的中国第二部正在火热上映中。Android系统中的这些菜单莫非也是点菜用的?如果你这样想的话,疯兄...
为此,“职场大菠菜”携手"指尖疯教育"重磅推出《安卓开发实战免费微课》系列!91集微课,足以让您从咿呀学语的菜鸟成功晋级内功深厚的高手。 微课也要有力量,免费也要有匠心!从PPT课件的高颜值梳妆,到产品制作...
一款简单趣味性强的安卓小应用,根据指尖的脉搏跳动测出您的健康及长相状况
疯兄相信,每个app在开发之初,都需要考虑如何存储信息和数据的问题,这些信息和数据各种各种/五花八门,不同的信息使用不同的存储方式听起来可能更靠谱一些。而SharedPreference就是为了存储轻量级数据而生的,轻量...
这段旅程是android开发学习之旅的核心。本集疯兄给大家带来的是activity,activity不要单纯从字面意义理解为活动,activity可以理解为你的app程序的门面或者面子工程,也就是用户看到的、摸到的、听到的无不都是...
为此,“职场大菠菜”携手"指尖疯教育"重磅推出《安卓开发实战免费微课》系列!91集微课,足以让您从咿呀学语的菜鸟成功晋级内功深厚的高手。 微课也要有力量,免费也要有匠心!从PPT课件的高颜值梳妆,到产品制作...
基于Android平台的“指尖上的百草园”APP设计与实现.pdf