Android电子拍卖系统总结四
16lz
2022-01-23
五、管理拍卖物品
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 map = new HashMap(); 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); }}
运行效果图:
更多相关文章
- android中数据存储的contentprovider的使用方法
- Android(安卓)向菜单按钮说再见
- Android简易计算器——LinearLayout布局
- android通知栏响应事件
- 记一次BottomNavigationView使用踩坑
- Android(安卓)ImageSwithcher的使用
- android 按钮按下时改变字体颜色
- android 返回键退出程序
- Android,HTTP请求中文乱码