很长时间没写了,最近因业务需要,要学习新的东西,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.效果图:


更多相关文章

  1. Android(安卓)2.3状态栏中添加menu home back快捷键
  2. Android自适应不同分辨率或不同屏幕大小的layout布局
  3. Android基础教程(二)之五大布局对象
  4. Android基础篇_Part1_Android基础知识
  5. [转]创建不可见的Activity
  6. android —— 自定义控件 利用 ViewPage 实现滑动屏
  7. 谈谈android大众常用的五种布局?
  8. Android(安卓)Material Design 系列之 CoordinatorLayout + Coll
  9. Android(安卓)studio安装与配置Butter knife过程

随机推荐

  1. Android 属性动画详解
  2. Android Wear 进阶0.1 进阶表: Developing
  3. Android 福彩3D体彩排列(源码+算法)
  4. android stuido build arr :No toolchains
  5. Android配置ip地址
  6. Android:AIDL使用详解
  7. Android(安卓)中 Context介绍(sundy深入浅
  8. Android使用控件Spinner实现下拉菜单列表
  9. Android中的一些方法-----生生不息
  10. android 休眠唤醒机制分析(一) — wake_l