本来准备周末看NBA,可是这两天都没比赛,要到礼拜一,悲吹的上班族

最近来感觉进步缓慢,难道是天气越来越热的缘故,开玩笑了,今天冒雨来公司加班,接着完善这个的项目的其他的功能模块。

今天说的模块是:查看流拍的物品—(各位童鞋的可以参照李刚的书19章的项目,往大家拍砖)

它对应的Servlet是ViewFailServlet,返回的数据为:

JSON数据,类似如下:

[{"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"}]

1. 查看流拍的物品的程序界面:view_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"
>
<TextView
android:id="@+id/view_title"
android:text="@string/view_succ"
android:textSize="@dimen/label_font_size"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<!-- 定义返回按钮 -->
<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
android:id="@+id/succList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

2.查看流拍物品的Activity:ViewItem.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.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class ViewItem extends Activity{
Button bnHome;
ListView succList;
TextView viewTitle;
private static final String TAG="ViewItem";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.view_item);
//获取界面上的组件
bnHome = (Button)findViewById(R.id.bn_home);
succList = (ListView)findViewById(R.id.succList);
viewTitle =(TextView) findViewById(R.id.view_title);
//为返回按钮绑定事件监听器
bnHome.setOnClickListener(new FinishListener(this));
String action = getIntent().getStringExtra("action");
//定义发送的URL
String url = HttpUtil.BASE_URL+action;
if(action.equals("ViewFailServlet")){
viewTitle.setText(R.string.view_fial);
}
try{
//向指定URL发送请求,并把服务器响应转化成JSONArry对象
JSONArray jsonArray = new JSONArray(HttpUtil.getRequest(url));
//将JSONArray包装成Adapter
JSONArrayAdapter jsonAdapter = new JSONArrayAdapter(ViewItem.this, jsonArray, "itemName", true);
succList.setAdapter(jsonAdapter);
}catch(Exception e){
DialogUtil.showDialog(this, "服务器响应异常,请稍后再试!",false);
e.printStackTrace();
}
succList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
//查看指定的物品
viewItemDetail(position);
}
});
}
//查看指定的物品
private void viewItemDetail(int postiton){
//加载detail.xml界面布局代表视图
View detailView = getLayoutInflater().inflate(R.layout.detail, null);
//获取detail.xml界面布局文件中的文本框
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 itemRemark =(EditText)detailView.findViewById(R.id.itemRemark);
//获取被单击的列表项
JSONObject jsonObject = (JSONObject)succList.getAdapter().getItem(postiton);
try{
//通过文本显示物品详情
Log.i(TAG, "itemKind--01>"+jsonObject.getString("itemName"));
Log.i(TAG, "itemKind--02>"+jsonObject.getDouble("maxPrice")+"");
Log.i(TAG, "itemKind--03>"+jsonObject.getString("itemDesc"));
itemName.setText(jsonObject.getString("itemName"));
itemKind.setText(jsonObject.getString("kind"));
//          Log.i(TAG, "itemKind--01>"+jsonObject.getString("kind"));
maxPrice.setText(jsonObject.getDouble("maxPrice")+"");
itemRemark.setText(jsonObject.getString("itemDesc"));
}catch(JSONException e){
e.printStackTrace();
}
DialogUtil.showDialog(ViewItem.this, detailView);
}
}

3.这里上面用到了把一个JSON对象,转化成数组来处理,在对JSON数组进行包装,作为ListView的内容的Adapter的工具类:JSONArrayAdapter.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 JSONArrayAdapter extends BaseAdapter{
private Context ctx;
//定义需要包装的JSONArray对象
private JSONArray jsonArray;
//定义列表显示JSONOBject对象的那个属性
private String property;
private boolean hasIcon;
public JSONArrayAdapter(Context ctx,JSONArray jsonArray,String property,boolean hasIcon) {
// TODO Auto-generated constructor stub
this.ctx = ctx;
this.jsonArray = jsonArray;
this.property = property;
this.hasIcon  = hasIcon;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return jsonArray.length();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return jsonArray.optJSONObject(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
try{
return ((JSONObject)getItem(position)).getInt("id");
}catch(JSONException e){
e.printStackTrace();
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//定义一个线性布局管理器
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{
//获取JSONArray数组元素的property属性
String itemName = ((JSONObject)getItem(position)).getString(property);
//设置显示的Textview所显示的内容
tv.setText(itemName);
}catch(JSONException e){
e.printStackTrace();
}
tv.setTextSize(20);
if(hasIcon){
//将TextView添加到LinearLayout
linear.addView(tv);
return linear;
}else{
tv.setTextColor(Color.BLACK);
return tv;
}
}
}

最后查看流拍物品的记录的效果图如下:

指尖上的Android之实战篇(六)相关推荐

  1. [知识图谱实战篇] 六.HTML+D3实现点击节点显示相关属性及属性值

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  2. python实战篇(六)---打造自己的签名软件

    为什么上帝看到思考的人会笑?那是因为人在思考,却又抓不住真理.因为人越思考,一个人的思想就越跟另一个人的思想相隔万里. --米兰·昆德拉 Python实战篇重在实战,今天,我们就来设计一款自己的签名软 ...

  3. Android项目实战(六):JazzyGridView和JazzyListView的使用

    GridView和ListView控件划动的动画效果 ------------------------------------------------------------------------- ...

  4. Android构建流程——篇六

    文章目录 Task17: javaPreCompileDebug 1. input/ouput 2. 验证 3. 核心类(JavaPreCompileTask) Task18:compileDebug ...

  5. Vue实战篇二十六:创建动态仪表盘

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  6. Vue实战篇十六:导航菜单

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  7. 腾讯Android自动化测试实战

    腾讯Android自动化测试实战 丁如敏 盛娟 等著 图书在版编目(CIP)数据 腾讯Android自动化测试实战 / 丁如敏等著. -北京:机械工业出版社,2016.10 ISBN 978-7-11 ...

  8. [知识图谱实战篇] 七.HTML+D3实现关系图谱搜索功能

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  9. Vue实战篇三十三:实现新闻的浏览历史

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

最新文章

  1. 2022-2028年中国环卫行业产业链深度调研及投资前景预测报告
  2. solr dataimport 数据导入源码分析(二)
  3. python命令行tab补全_python命令行下按tab建补全的方法
  4. 2021年广西艺术高考成绩查询,2021年广西美术高考成绩查询网址:https://www.gxeea.cn/...
  5. jsp页面从session获取当前用户信息控制页面按钮是否显示
  6. linux基础命令学习之mv(7)
  7. oracle的declare声明语法
  8. php form 上传_php+html5使用FormData对象提交表单及上传图片的方法
  9. C++/Python/Java/C,四大语言对比,你更喜欢哪种?
  10. Glib2之GType和gpointer类型(十三)
  11. BigDecimal 加减乘除及对比
  12. matlab+sfm+样例,基于SFM的三维重建MATLAB程序
  13. 滴滴悬赏百万寻凶,机智网友支付宝钓鱼转账杀害空姐明珠疑凶
  14. 苹果用计算机知道密码,苹果icloud密码忘了?最全攻略奉上
  15. C++ MFC 如何画一个空心的即透明填充色的图形如矩形,圆形等
  16. 2021-08-16
  17. 安卓开发 监听虚拟按键_Android 虚拟按键适配动态调整布局的方法
  18. 8月书讯丨11本新上好书速览(计算机+经管)
  19. 微信支付密码设置html,微信支付页面怎么加密码锁屏(微信支付界面怎么上锁)...
  20. Yoshua Bengio——《Deep Learning》学习笔记1

热门文章

  1. 组织级过程资产库如何助力CMMI3-5级高效落地?
  2. 小乌龟(TortoiseGit) 安装以及使用
  3. 【Java SE】猜数字游戏
  4. 基于Java的联赛综合信息管理系统的设计与实现
  5. Flink1.13.2运行在大数据星环TDH集群的jdk1.7上解决办法
  6. 风云编程python怎么样_二十年编程语言风云,哪款是你的爱豆?
  7. 电子琴的源程序(eda课程设计)
  8. SumatraPDF暗黑模式+简化
  9. 复利mysql_0414-复利计算再升级
  10. 顺序表基本操作算法——基础代码(C语言)