博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指尖上的Android之实战篇(七)
阅读量:4212 次
发布时间:2019-05-26

本文共 6581 字,大约阅读时间需要 21 分钟。

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

 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
map = new HashMap
(); map.put("kindName", name); map.put("kindDesc", desc); //定义发送的Url String url = HttpUtil.BASE_URL +"AddKindServlet"; return HttpUtil.postRequest(url,map); } }

7.效果图:

转载地址:http://lszmi.baihongyu.com/

你可能感兴趣的文章
RMAN-01009: syntax error: found "dot" 解决方法
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
SQL SERVER中判断某个字段是否包含大写字母
查看>>
修改master库文件路径
查看>>
拷贝增量文件
查看>>
mysql中的 skip-name-resolve 问题
查看>>
删除最后一次的备份文件vbs
查看>>
vbs 实现压缩文件夹为zip文件
查看>>
在VBS中,SET的用法
查看>>
组策略合理限制VBS文件
查看>>
VBS不支持跨盘操作
查看>>
MySQl备份恢复策略(完全+增量备份策略)
查看>>
VBS发送邮件
查看>>
锁的兼容性
查看>>
解决mysqldump备份报错:SET OPTION SQL_QUOTE_SHOW_CREATE=1
查看>>
mysqldump参数详细说明
查看>>