很长时间没写了,最近因业务需要,要学习新的东西,android放下了,今天有时间,整理之前的东西,把这个系列最后两篇写完。因为很长时间没写了,有什么问题发信给我。
查看物品种类模块:
1.它对应Servlet的 是 ViewKindServlet.java 类:
返回的JSON 数据类型为:
[{"id":1,"kindDesc":"This is not a mainstream product, but the price is that make your move","items":[],"kindName":"computer hardware"},{"id":2,"kindDesc":"Provide very scarce homes","items":[],"kindName":"house property"},{"id":5,"kindDesc":"we can ues it
buy sth","items":[],"kindName":"money"},{"id":6,"kindDesc":"enjoy oneself","items":[],"kindName":"picture"},{"id":7,"kindDesc":"write sth","items":[],"kindName":"paper"}]
2.查看物品种类的布局文件:manage_kind.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:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg">
<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"
>
<TextView
android:text="@string/manage_kind"
android:textColor="@color/white"
android:textSize="@dimen/label_font_size"
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_kind"
/>
</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/kindList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
3.显示物品种类的Activity: ManageKind.java
package com.infy.auction.client;
import org.json.JSONArray;
import com.infy.auction.client.util.DialogUtil;
import com.infy.auction.client.util.HttpUtil;
import com.infy.auction.client.util.KindArrayAdapter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
public class ManageKind extends Activity{
private static final String TAG="ManageKind";
Button bnHome;
Button bnAdd;
ListView kindList;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.i(TAG, "befor-->");
setContentView(R.layout.manage_kind);
Log.i(TAG, "after");
//获取界面上布局上的两个按钮
bnHome =(Button)findViewById(R.id.bn_home);
bnAdd =(Button)findViewById(R.id.bnAdd);
kindList = (ListView)findViewById(R.id.kindList);
//为按钮添加单击监听事件
bnHome.setOnClickListener(new FinishListener(this));
bnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//启动AddKind Activity
Log.i(TAG, "add->添加类");
Intent intent = new Intent(ManageKind.this,AddKind.class);
startActivity(intent);
}
});
String action = getIntent().getStringExtra("action");
//定义发送请求的URL
String url = HttpUtil.BASE_URL +action;
try{
//向指定的URL发送请求,并把相应包装成JSONArray对象
final JSONArray jsonArray = new JSONArray(HttpUtil.getRequest(url));
//把JSONArray对象包装成Adapter
kindList.setAdapter(new KindArrayAdapter(jsonArray, ManageKind.this));
}catch(Exception e){
DialogUtil.showDialog(this, "服务器异常,请稍后再试!", false);
e.printStackTrace();
}
}
}
4.这里用到了一个把JSONArray对象,使用LsitView显示物品种类的代码:KindArrayAdapter提供的列表项既包括种类名,也包括种类描述:KindArrayAdapter.java
package com.infy.auction.client.util;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.infy.auction.client.R;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class KindArrayAdapter extends BaseAdapter{
//需要包装的JSONArray
private JSONArray kindJsonArray;
private Context ctx;
public KindArrayAdapter(JSONArray kindJsonArray,Context ctx) {
this.kindJsonArray = kindJsonArray;
this.ctx = ctx;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
//返回ListView中包含的列表的数量
return kindJsonArray.length();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
//获取指定的列表包装的JSONObject
return kindJsonArray.optJSONObject(position);
}
@Override
public long getItemId(int position) {
try{
return ((JSONObject)getItem(position)).getInt("id");
}catch(JSONException e){
e.printStackTrace();
}
return -1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//定义一个线性布局
LinearLayout container = new LinearLayout(ctx);
//设置为水平的线性布局管理器
container.setOrientation(1);
//定义一个线性布局管理器
LinearLayout linear = new LinearLayout(ctx);
//设置为水平的线性布局管理器
linear.setOrientation(0);
//创建一个ImageView
ImageView iv = new ImageView(ctx);
iv.setPadding(10, 0, 20, 0);
iv.setImageResource(R.drawable.item);
//将图片添加到LinearLayout中
linear.addView(iv);
//创建一个TextView
TextView tv= new TextView(ctx);
try{
String kindName = ((JSONObject)getItem(position)).getString("kindName");
//设置TextView所显示的内容
tv.setText(kindName);
}catch(JSONException e){
e.printStackTrace();
}
tv.setTextSize(20);
tv.setTextColor(Color.WHITE);
//将Textviewt添加到LinearLayout中
linear.addView(tv);
container.addView(linear);
//定义一个文本框来显示种类描述
TextView descView = new TextView(ctx);
descView.setPadding(30, 0, 0, 0);
try{
//获取JSONArray数组元素的kindDesc属性
String kindDesc = ((JSONObject)getItem(position)).getString("kindDesc");
descView.setText(kindDesc);
}catch(JSONException e){
e.printStackTrace();
}
descView.setTextSize(16);
container.addView(descView);
return container;
}
}
5.添加种类功能:添加种类对应的ServletAddKindServlet:
6.添加物品种类对应的Activity:
AddKind.java
package com.infy.auction.client;
import java.util.HashMap;
import java.util.Map;
import com.infy.auction.client.util.DialogUtil;
import com.infy.auction.client.util.HttpUtil;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class AddKind extends Activity{
//定义界面上的组件
EditText kindName;
EditText kindDesc;
Button bnAdd;
Button bnCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.add_kind);
//获得界面上组件
kindName = (EditText)findViewById(R.id.kindName);
kindDesc = (EditText)findViewById(R.id.kindDesc);
bnCancel =(Button)findViewById(R.id.bnCancel);
bnAdd = (Button)findViewById(R.id.bnAdd);
bnCancel.setOnClickListener(new FinishListener(AddKind.this));
bnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//输入校验
if(validate()){
//获取用户输入的种类名和描述
String name = kindName.getText().toString().trim();
String desc = kindDesc.getText().toString().trim();
try{
//添加物品种类
String result = addKind(name, desc);
//使用对话框来显示添加结果
DialogUtil.showDialog(AddKind.this, result, true);
}catch(Exception e){
e.printStackTrace();
}
}
}
});
}
//对用户输入进行类名的校验
private boolean validate(){
String name = kindName.getText().toString().trim();
if(name.equals("")){
DialogUtil.showDialog(this, "种类名称是必填项!",false);
return false;
}
return true;
}
private String addKind(String name,String desc) throws Exception{
//使用Map封装请求参数
Map<String, String> map = new HashMap<String, String>();
map.put("kindName", name);
map.put("kindDesc", desc);
//定义发送的Url
String url = HttpUtil.BASE_URL +"AddKindServlet";
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