Android电子拍卖系统总结四

五、管理拍卖物品

ManageItem.java

package com.lq.auction;

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

public class ManageItem extends FragmentActivity implements Callbacks{

    @Override
    public Fragment getFragment() {

        return new ManageItemFragment();
    }

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

}

manage_item.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"
    android:gravity="center" >
    <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:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="12dp">
            <TextView 
                android:text="@string/manage_item"
                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_item"/>
        </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 
        android:id="@+id/itemList"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ListView>

</LinearLayout>

ManageItemFragment.java

package com.lq.auction;

public class ManageItemFragment extends Fragment {

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

            @Override
            public void onClick(View v) {
                mCallbacks.onItemSelected(ADD_ITEM, null);
            }
        });
        //定义发送请求的URL
        String url = HttpUtil.BASE_URL + "viewOwnerItem.jsp";  //getArguments()?

        try {
            //向指定的URL发送请求,并把服务器响应转换成JSONArray对象
            JSONArray jsonArray = new JSONArray(HttpUtil.getRequest(url));
            //将JSONArray包装成Adapter
            JSONArrayAdapter adapter = new JSONArrayAdapter(getActivity()
                    , jsonArray, "name", true);
            itemList.setAdapter(adapter);           
        } catch (Exception e) {
            DialogUtil.showDialog(getActivity(), "服务器异常,请稍后再试", false);
            e.printStackTrace();
        }

        itemList.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                //查看指定物品的详细情况
                viewItemBid(position);              
            }           
        });         
        return rootView;
    }

    //当该Fragment被添加、显示到Activity时,回调该方法
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if(!(activity instanceof Callbacks)){
            //如果Activity没有实现Callbacks接口,抛出异常
            throw new IllegalStateException(
                    "ManageitemFragment所在的Activity必须实现Callbacks接口");
        }
        //把该Activity当成Callbacks对象 
        mCallbacks = (Callbacks) activity;
    }
    @Override
    public void onDetach() {
        super.onDetach();
        //将mCallbacks赋为null
        mCallbacks = null;
    }

    private void viewItemBid(int position) {
        //加载detail_in_bid.xml界面布局代表的视图
        View detailView = getActivity().getLayoutInflater()
                .inflate(R.layout.detail_in_bid, null);
        //获取detail_in_bid.xml界面布局中的文本框
        TextView itemName = (TextView) detailView.findViewById(R.id.itemName);
        TextView itemKind = (TextView) detailView.findViewById(R.id.itemKind);
        TextView maxPrice = (TextView) detailView.findViewById(R.id.maxPrice);
        TextView initPrice = (TextView) detailView.findViewById(R.id.initPrice);
        TextView endTime = (TextView) detailView.findViewById(R.id.endTime);
        TextView itemRemark = (TextView) detailView.findViewById(R.id.itemRemark);
        //获取被单击的列表项
        JSONObject jsonObj = (JSONObject) itemList.getAdapter().getItem(position);
        try {
            //通过文本框显示物品详情
            itemName.setText(jsonObj.getString("name"));
            itemKind.setText(jsonObj.getString("kind"));
            initPrice.setText(jsonObj.getString("initPrice"));
            endTime.setText(jsonObj.getString("endTime"));
            maxPrice.setText(jsonObj.getString("maxPrice"));
            itemRemark.setText(jsonObj.getString("desc"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
        DialogUtil.showDialog(getActivity(), detailView);   
    }


}

detail_in_bid.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">
    <TableRow>
        <TextView 
            android:text="@string/item_name"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/itemName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/tv_show"/>
    </TableRow>
    <TableRow>
        <TextView 
            android:text="@string/item_kind"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/itemKind"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/tv_show"/>      
    </TableRow>
    <TableRow>
        <TextView 
            android:text="@string/win_price"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/maxPrice"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/tv_show"/>      
    </TableRow>
    <TableRow>
        <TextView 
            android:text="@string/init_price"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/initPrice"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/tv_show"/>      
    </TableRow>
    <TableRow>
        <TextView 
            android:text="@string/end_time"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/endTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/tv_show"/>      
    </TableRow>        
    <TableRow>
        <TextView 
            android:text="@string/remark"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView 
            android:id="@+id/itemRemark"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/tv_show"/>       
    </TableRow>
</TableLayout>

AddItem.java

package com.lq.auction;

import android.app.Fragment;

public class AddItem extends FragmentActivity{

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

}

add_item.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:text="@string/add_item_title"
            android:gravity="center"
            android:textSize="@dimen/label_font_size"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="@dimen/title_padding"/>
    <!-- 输入物品名称的行 -->    
    <TableRow>
        <TextView 
            android:text="@string/item_name"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText 
            android:id="@+id/itemName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"/>
    </TableRow>
    <!-- 输入物品描述的行 -->
    <TableRow>
        <TextView 
            android:text="@string/item_desc"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText 
            android:id="@+id/itemDesc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"/>       
    </TableRow>
    <!-- 输入物品备注的行 -->
    <TableRow>
        <TextView 
            android:text="@string/remark"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText 
            android:id="@+id/itemRemark"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"/>       
    </TableRow>
    <!-- 输入起拍价格的行 -->
    <TableRow>
        <TextView 
            android:text="@string/init_price"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText 
            android:id="@+id/initPrice"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"/>    
    </TableRow>
    <!-- 选择有效时间的行 -->
    <TableRow>
        <TextView 
            android:text="@string/avail_time"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <Spinner 
            android:id="@+id/availTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:entries="@array/availTime"/>     
    </TableRow>
    <!-- 输入选择物品种类的行 -->
    <TableRow>
        <TextView 
            android:text="@string/item_kind"
            android:textSize="@dimen/label_font_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <Spinner 
            android:id="@+id/itemKind"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>      
    </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>

AddItemFragment.java

package com.lq.auction;

public class cextends Fragment {
    // 定义界面中文本框
    EditText itemName, itemDesc, itemRemark, initPrice;
    Spinner itemKind, availTime;
    // 定义界面中两个按钮
    Button bnAdd, bnCancel;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.add_item, container, false);
        // 获取界面中的编辑框
        itemName = (EditText) rootView.findViewById(R.id.itemName);
        itemDesc = (EditText) rootView.findViewById(R.id.itemDesc);
        itemRemark = (EditText) rootView.findViewById(R.id.itemRemark);
        initPrice = (EditText) rootView.findViewById(R.id.initPrice);
        itemKind = (Spinner) rootView.findViewById(R.id.itemKind);
        availTime = (Spinner) rootView.findViewById(R.id.availTime);
        //定义发送请求的URL
        String url = HttpUtil.BASE_URL + "viewKind.jsp"; 
        JSONArray jsonArray = null;
        try {
            //获取系统中所有的物品种类
            //向指定的URL发送请求,并把服务器响应转换成JSONArray对象
            jsonArray = new JSONArray(HttpUtil.getRequest(url));            
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        JSONArrayAdapter adapter = new JSONArrayAdapter(getActivity()
                , jsonArray, "kindName", false);  //注意大小写,之前把"kindName"写成了"kindname",导致物品种类显示不出来
        itemKind.setAdapter(adapter);

        // 获取界面中的两个按钮
        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 = itemName.getText().toString();
                    String desc = itemDesc.getText().toString();
                    String remark = itemRemark.getText().toString();
                    String price = initPrice.getText().toString();
                    JSONObject kind = (JSONObject) itemKind.getSelectedItem();
                    int avail = availTime.getSelectedItemPosition();
                    //根据用户选择有效时间选项,指定实际的有效时间
                    switch (avail) {
                    case 5:
                        avail = 7;
                        break;
                    case 6:
                        avail = 30;
                        break;

                    default:
                        avail +=1;
                        break;
                    }
                    try {
                        // 添加物品
                        String result = addItem(name, desc
                                , remark, price, kind.getInt("id"), avail);
                        // 使用对话框来显示添加结果
                        DialogUtil.showDialog(getActivity(), result, true);

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

    // 对用户输入的种类名称进行校验
    private boolean validate() {
        String name = itemName.getText().toString().trim();
        if(name.equals("")){
            DialogUtil.showDialog(getActivity(), "物品名称是必填项", false);
            return false;
        }
        String price = initPrice.getText().toString().trim();
        if (price.equals("")) {
            DialogUtil.showDialog(getActivity(), "起拍价格是必填项", false);
            return false;       
        }
        try {
            //尝试把起拍价格转换为浮点数
            Double.parseDouble(price);
        } catch (NumberFormatException e) {
            DialogUtil.showDialog(getActivity(), "起拍价格是必填是数值", false);
            return false;
        }
        return true;
    }
    private String addItem(String name, String desc
            , String remark, String initPrice, int kindId, int availTime)
                    throws Exception{
        // 使用Map封装请求参数
        Map<String, String> map = new HashMap<String, String>();
        map.put("itemName", name);
        map.put("itemDesc", desc);
        map.put("itemRemark", remark);
        map.put("initPrice", initPrice);
        map.put("kindId", kindId + "");
        map.put("availTime", availTime+ "");
        // 定义发送请求的URL
        String url = HttpUtil.BASE_URL + "addItem.jsp";
        // 发送请求
        return HttpUtil.postReuest(url, map);
    }
}

运行效果图:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值