`
lovnet
  • 浏览: 6705145 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

指尖上的Android之实战篇(七)

 
阅读更多

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics