Android电子拍卖系统总结三

三、查看物品种类
ManageKind.java

package com.lq.auction;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;

public class ManageKind extends FragmentActivity implements Callbacks{

    @Override
    public Fragment getFragment() {
        return new ManageKindFragment();
    }

    @Override
    public void onItemSelected(Integer id, Bundle bundle) {
        //当用户单击ManageKindFragment中的“添加”按钮时,启动AddKind Activity
        Intent i = new Intent(this, AddKind.class);
        startActivity(i);
    }
}

manage_kind.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<LinearLayout 
    android:orientation="horizontal"
    android:gravity="center"
    android:layout_width="match_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:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <!-- 添加种类的按钮 -->
        <Button 
            android:id="@+id/bnAdd"
            android:layout_width="85dp"
            android:layout_height="30dp"
            android:background="@drawable/add_kind"/>
    </LinearLayout>
        <Button 
            android:id="@+id/bnHome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/home"/>
</LinearLayout>
<!-- 显示种类列表的ListView -->
<ListView 
    android:id="@+id/kindList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
</LinearLayout>

ManageKindFragment.java

package com.lq.auction;

import org.json.JSONArray;
import com.lq.client.util.DialogUtil;
import com.lq.client.util.HttpUtil;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;

public class ManageKindFragment extends Fragment {

    public static final int ADD_KIND = 0x1007;
    Button bnHome, bnAdd;
    ListView kindList;
    Callbacks mCallbacks;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.manage_kind, container, false);
        //获取界面上的两个按钮
        bnHome = (Button) rootView.findViewById(R.id.bnHome);
        bnAdd = (Button) rootView.findViewById(R.id.bnAdd);
        kindList = (ListView) rootView.findViewById(R.id.kindList);
        //为“返回”按钮的单击事件绑定事件监听器
        bnHome.setOnClickListener(new HomeListener(getActivity()));
        //为“添加”按钮的单击事件绑定事件监听器
        bnAdd.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //当“添加”按钮被单击时,调用该Fragment所在Activity的onItemSelected方法
                mCallbacks.onItemSelected(ADD_KIND, null);
            }
        });
        String url = HttpUtil.BASE_URL+"viewKind.jsp";
        try {
            //向指定URL发送请求,并把响应包装成JSONArray对象
            final JSONArray jsonArray = new JSONArray(HttpUtil.getRequest(url));
            //把JSONArray对象包装成Adapter
            kindList.setAdapter(new KindArrayAdapter(jsonArray, getActivity()));
        } catch (Exception e) {
            DialogUtil.showDialog(getActivity(), "服务器响应异常,请稍后再试!", false);
            e.printStackTrace();
        }
        return rootView;
    }
    //当该Fragment被添加、显示到Activity时,回调该方法
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if(!(activity instanceof Callbacks)){
            //如果Activity没有实现Callbacks接口,抛出异常
            throw new IllegalStateException(
                    "ManageKindFragment所在的Activity必须实现Callbacks接口");
        }
        //把该Activity当成Callbacks对象 
        mCallbacks = (Callbacks) activity;
    }
    @Override
    public void onDetach() {
        super.onDetach();
        //将mCallbacks赋为null
        mCallbacks = null;
    }

}

KindArrayAdapter.java

package com.lq.auction;

import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Context;
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 kindArray;
    private Context ctx;

    public KindArrayAdapter(JSONArray kindArray, Context ctx) {
        this.kindArray = kindArray;
        this.ctx = ctx;
    }

    @Override
    public int getCount() {
        //返回ListView包含的列表项的数量
        return kindArray.length();
    }

    @Override
    public Object getItem(int position) {
        //获取指定列表项所包含的JSONObject   //JSONObject?
        return kindArray.optJSONObject(position);
    }

    @Override
    public long getItemId(int position) {
        try {
            return ((JSONObject) getItem(position)).getInt("id");
        } catch (Exception 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 {
            //获取JSONArray数组元素的kindName属性
            String kindName = ((JSONObject) getItem(position)).getString("kindName");
            //设置TextView所显示的内容
            tv.setText(kindName);
        } catch (Exception e) {
            e.printStackTrace();
        }

        tv.setTextSize(20);
        //将TextView添加到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 (Exception e) {
                e.printStackTrace();
        }
        descView.setTextSize(16);
        container.addView(descView);

        return container;
    }

}

四、添加物品种类

package com.lq.auction;

import android.app.Fragment;

public class AddKind extends FragmentActivity{

    @Override
    public Fragment getFragment() {
        return new AddKindFragment();
    }

}

add_kind.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1" >
    <TextView 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/add_kind_title"
        android:textSize="@dimen/label_font_size"
        android:padding="@dimen/title_padding"/>
    <TableRow>
        <TextView 
            android:text="@string/kind_name"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText 
            android:id="@+id/kindName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"/>
    </TableRow>
    <TableRow>
        <TextView 
            android:text="@string/kind_desc"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText 
            android:id="@+id/kindDesc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"/>
    </TableRow>
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">
        <Button 
            android:id="@+id/bnAdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/add"/>
        <Button 
            android:id="@+id/bnCancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cancel"/>
    </LinearLayout>
</TableLayout>

AddKindFragment.java

package com.lq.auction;

import java.util.HashMap;
import java.util.Map;
import com.lq.client.util.DialogUtil;
import com.lq.client.util.HttpUtil;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;

public class AddKindFragment extends Fragment {
    // 定义界面中两个文本框
    EditText kindName, kindDesc;
    // 定义界面中两个按钮
    Button bnAdd, bnCancel;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.add_kind, container, false);
        // 获取界面中两个编辑框
        kindName = (EditText) rootView.findViewById(R.id.kindName);
        kindDesc = (EditText) rootView.findViewById(R.id.kindDesc);
        // 获取界面中的两个按钮
        bnAdd = (Button) rootView.findViewById(R.id.bnAdd);
        bnCancel = (Button) rootView.findViewById(R.id.bnCancel);
        // 为取消按钮的单击事件绑定事件监听器
        bnCancel.setOnClickListener(new HomeListener(getActivity()));
        bnAdd.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if(validate()){
                    // 输入校验
                    String name = kindName.getText().toString();
                    String desc = kindDesc.getText().toString();
                    try {
                        // 获取用户输入的种类名称和描述
                        String result = addKind(name, desc);
                        // 使用对话框来显示添加结果
                        DialogUtil.showDialog(getActivity(), result, true);

                    } catch (Exception e) {
                        DialogUtil.showDialog(getActivity(), "服务器响应异常,请稍后再试", false);
                        e.printStackTrace();
                    }
                }
            }
        });
        return rootView;
    }

    // 对用户输入的种类名称进行校验
    private boolean validate() {
        String name = kindName.getText().toString().trim();
        if(name.equals("")){
            DialogUtil.showDialog(getActivity(), "种类名称是必填项", 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 + "addKind.jsp";
        // 发送请求
        return HttpUtil.postReuest(url, map);
    }

}

单击“管理物品种类”运行效果图:
3
4
5

第18章 疯狂连连看 18.1 连连看游戏简介 18.2 开发游戏界面 18.2.1 开发界面布局 18.2.2 开发游戏界面组件 18.2.3 处理方块之间的连接线 18.3 连连看的状态数据模型 18.3.1 定义数据模型 18.3.2 初始化游戏状态数据 18.4 加载界面的图片 18.5 实现游戏Activity 18.6 实现游戏逻辑 18.6.1 定义GameService组件接口 18.6.2 实现GameService组件 18.6.3 获取触碰点的方块 18.6.4 判断两个方块是否可以相连 18.6.5 定义获取通道的工具方法 18.6.6 没有转折点的横向连接 18.6.7 没有转折点的纵向连接 18.6.8 一个转折点的连接 18.6.9 两个转折点的连接 18.6.10 找出最短距离 18.7 本章小结 第19章 电子拍卖系统 19.1 系统功能简介和架构设计 19.1.1 系统功能简介 19.1.2 系统架构设计 19.2 JSON简介 19.2.1 使用JSON语法创建对象 19.2.2 使用JSON语法创建数组 19.2.3 Java的JSON支持 19.3 发送请求的工具类 19.4 用户登录 19.4.1 处理登录的Servlet 19.4.2 用户登录 19.5 查看流拍物品 19.5.1 查看流拍物品的Servlet 19.5.2 查看流拍物品 19.6 管理物品种类 19.6.1 浏览物品种类的Servlet 19.6.2 查看物品种类 19.6.3 添加种类的Servlet 19.6.4 添加物品种类 19.7 管理拍卖物品 19.7.1 查看自己的拍卖物品的Servlet 19.7.2 查看自己的拍卖物品 19.7.3 添加拍卖物品的Servlet 19.7.4 添加拍卖物品 19.8 参与竞拍 19.8.1 选择物品种类 19.8.2 根据种类浏览物品的Servlet 19.8.3 根据种类浏览物品 19.8.4 参与竞价的Servlet 19.8.5 参与竞价 19.9 权限控制 19.10 本章小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值