Android开发:加油站订单支付案例
这个其实是我的java移动开发的练习作品来的,页面分为三部分:启动页,广告页,油枪列表,订单列表和支付页。所有的代码都放下面了,还有一些资源文件和背景布局设计啥的,你们可以自己下载图片和设计,那些都属于比较简单没有任何逻辑的设计内容我就不一一拿出来贴了。
也可以下载我自己做的案例
Android开发加油站订单发起至支付
启动页
启动页比较简单其实也就是在配置页上将启动页设置为首页实现的,会有启动页主要是为了加载广告页或者加载后端数据。我这里的demo启动页进入广告页是延迟了3秒的,如果想闪屏进入广告页的话,可以把跳转时间改小。下面上代码块。
activity_sp.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/defultimg">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:layout_marginTop="10dp"
android:textSize="20sp" />
</RelativeLayout>
</LinearLayout>
SpActivity.java
package com.ljy.study;
import android.content.Intent;
import android.os.Handler;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.CompletableFuture;
public class SpActivity extends AppCompatActivity implements View.OnClickListener {
private int recLen = 5;//跳过倒计时提示5秒
private TextView tv;
Timer timer = new Timer();
private Handler handler;
private Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 隐藏系统状态栏
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//定义全屏参数
int flag= WindowManager.LayoutParams.FLAG_FULLSCREEN;
//设置当前窗体为全屏显示
getWindow().setFlags(flag, flag);
setContentView(R.layout.activity_sp);
initView();
timer.schedule(task, 1000, 1000);//等待时间一秒,停顿时间一秒
// 不点击跳过
// 在主线程中,因为系统已经初始化了一个Looper对象,所以直接创建Handler对象,就可以进行信息的发送与处理了!
handler = new Handler();
handler.postDelayed(runnable = new Runnable() {
@Override
public void run() {
//从闪屏界面跳转到广告页
Intent intent = new Intent(SpActivity.this, RotaActivity.class);
startActivity(intent);
finish();
}
}, 5000);//延迟5S后发送handler信息
}
private void initView() {
tv = findViewById(R.id.tv);//跳过
tv.setOnClickListener(this);//跳过监听
}
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen--;
tv.setText("跳过 " + recLen);
if (recLen < 0) {
timer.cancel();
tv.setVisibility(View.GONE);//倒计时到0隐藏字体
}
}
});
}
};
/**
* 点击跳过
*/
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv:
//从闪屏界面跳转到广告界面
Intent intent = new Intent(SpActivity.this, RotaActivity.class);
startActivity(intent);
finish();
if (runnable != null) {
handler.removeCallbacks(runnable);
}
break;
default:
break;
}
}
}
布局就不多说了,java文件主要用的东西就是定时器、线程和intent(用来跳转页面的),注释写的挺完整的,应该不会有人看不懂。
广告页
广告页是个轮播图页面,这部分原理是后台提交轮播广告图,我这边属于前台,前台获取相关图片,形成轮播图页面,但是由于没有后台,所以这个广告轮播图页面是图片是被定死的,启动页倒数3秒跳转进入广告页后,广告开始轮播,点击该页面任何位置都能够进入油枪选择页面。布局页面用的相对布局,内容页比较简单。逻辑页面主要用了适配器和定时器。
activity_rota.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RotaActivity">
<!-- <Button-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:background="#00000000"-->
<!-- android:id="@+id/home"/>-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.viewpager.widget.ViewPager>
</RelativeLayout>
</RelativeLayout>
RotaActivity.java
package com.ljy.study;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
public class RotaActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{
private ViewPager vp;
private int[] imas;
private ArrayList<ImageView> imaList;
private Boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rota);
//初始化布局
initViews();
//数据
initData();
//适配器
initAdapter();
flag=true;
//实现自动轮播
new Thread(new Runnable() {
@Override
public void run() {
while (flag) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
vp.setCurrentItem(vp.getCurrentItem() + 1);
}
});
}
}
}).start();
}
private void initAdapter() {
// ll.getChildAt(0).setEnabled(true);
vp.setAdapter(new MyAdapter());
vp.setCurrentItem(Integer.MAX_VALUE/2+2);//这里以一个%5为0的数开始,这样打开默认会在第0个item显示
}
@Override
protected void onDestroy() {
super.onDestroy();
flag=false;
}
private void initData() {
}
private void initViews() {
vp = (ViewPager) findViewById(R.id.vp);
vp.setOnPageChangeListener(this);
//图片数组
imas = new int[]{R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5,};
ImageView iv;
imaList = new ArrayList<ImageView>();
// View pointview;
for (int i = 0; i < imas.length; i++) {
iv = new ImageView(this);
iv.setImageResource(imas[i]);
iv.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent i = new Intent(RotaActivity.this , MainActivity.class);
startActivity(i);
}
});
imaList.add(iv);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
class MyAdapter extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
int newposition =position%5;
ImageView imageView=imaList.get(newposition);
container.addView(imageView);
return imageView;//对象返回给框架
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override //判断复用
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
}
}
油枪选择页
油枪号选择页,当页面存在订单时,油枪号的方块会变高亮,由于是自己做的demo所以没有中控获取不到订单,因此我自己建了一个关于SQLite的数据库,数据库存储内容包括油枪信息表,油品信息表和订单信息表。油枪选择页,根据数据库的油枪信息表和油品信息表渲染出了油枪选择页的内容,由于没有中控所以订单生成是通过点击油枪号按钮生成的,每点击一次按钮就会生成该按钮的订单,逻辑页会根据订单是否存在给相关油枪号生成高亮背景,并且跳转至订单列表页,由于只是一个小demo,所以并没有做加油升量和金额计算部分,这部分是我直接固定了加油升数和固定金额完成的,后续会继续完善这个demo的功能模块。页面布局没啥好说的,就是基本的切换和跳转功能。这个的逻辑页基本就是渲染数据库内容,属于前端页面的成分比较高。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#121212"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/tuichu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myback"
android:paddingLeft="24px"
android:paddingRight="24px"
android:paddingBottom="18px"
android:paddingTop="18px">
<ImageView
android:layout_width="40px"
android:layout_height="40px"
android:layout_marginLeft="8px"
android:layout_marginTop="5px"
android:src="@drawable/tuichu2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="屏保"
android:textColor="#707076"
android:textSize="36px"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right">
<LinearLayout
android:id="@+id/shuaxin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myback"
android:paddingLeft="24px"
android:paddingTop="18px"
android:paddingRight="24px"
android:paddingBottom="18px"
android:gravity="right">
<ImageView
android:layout_width="40px"
android:layout_height="40px"
android:layout_marginLeft="8px"
android:layout_marginTop="5px"
android:src="@drawable/reflash" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="刷新"
android:textColor="#707076"
android:textSize="36px" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/qing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/dian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/ji"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="击"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/xuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/ze"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="择"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/nin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="您"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/de"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="的"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/jia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加"
android:textColor="#E68E0B"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/you"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="油"
android:textColor="#E68E0B"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/qiang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="枪"
android:textColor="#E68E0B"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/hao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="号"
android:textColor="#E68E0B"
android:textSize="80px"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(如有问题请联系油站工作人员)"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20px"
android:orientation="vertical">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="31dp"
android:paddingBottom="31dp"
>
<LinearLayout
android:id="@+id/centercontrol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myback"
android:layout_gravity="center"
android:orientation="horizontal">
<!-- <TextView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:padding="10dp"-->
<!-- android:text="11111"/>-->
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
<GridLayout
android:id="@+id/GridItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:columnCount="5"
android:orientation="horizontal"
android:paddingLeft="30px"
android:layout_marginLeft="10px"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp">
</GridLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.ljy.study;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private Context mContext;
private SQLiteDatabase db;
private MyDBOpenHelper myDBHelper;
private static final int N = 99;
private GridLayout GridItem;
private String strall;
Random rand = new Random();
ArrayList<OilType> oiltypesList;
ArrayList<OilInfo> ItemList;
ArrayList<Order> orderlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
oiltypesList = new ArrayList<OilType>();
ItemList = new ArrayList<OilInfo>();
orderlist = new ArrayList<Order>();
GridItem = findViewById(R.id.GridItem);
mContext = MainActivity.this;
myDBHelper = new MyDBOpenHelper(mContext, "oilIn.db", null, 1);
db = myDBHelper.getWritableDatabase();
GetGunList();
initOildata();
oillallItem("全部");
// 返回广告页
LinearLayout exit = (LinearLayout)findViewById(R.id.tuichu);
LinearLayout shuaxin = (LinearLayout)findViewById(R.id.shuaxin);
shuaxin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//重新获取数据
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
finish();
// GridItem.removeAllViews();
// GetGunList();
// oillallItem();
}
});
exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//屏保键返回到广告页,Intent跳转
Intent intent = new Intent(MainActivity.this, RotaActivity.class);
startActivity(intent);
finish();
}
});
}
// 获取油信息
public void GetGunList() {
//参数依次是:表名,列名,where约束条件,where中占位符提供具体的值,指定group by的列,进一步约束
//指定查询结果的排序方式
Cursor cursor = db.query("oilType", null, null, null, null, null, null);
while (cursor.moveToNext()) {
int typeid = cursor.getColumnIndex("typeid");
String oiltype = cursor.getString(cursor.getColumnIndex("oiltype"));
OilType p=new OilType(typeid,oiltype);
oiltypesList.add(p);
}
cursor.close();
final LinearLayout centercontrol=(LinearLayout) findViewById(R.id.centercontrol);
for(OilType p:oiltypesList){
final TextView tv = new TextView(this);
// tv.setTextSize(36);
tv.setPadding(50,15,50,15);
tv.setText(p.toString());
tv.setTextSize(18);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i= 0 ; i<5;i++){
TextView alltextall = (TextView) centercontrol.getChildAt(i);
alltextall.setTextColor(0xFF777777);
alltextall.setBackgroundResource(R.drawable.sel);
alltextall.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
}
tv.setTextColor(0xFFFFFFFF);
tv.setBackgroundResource(R.drawable.sel_cen);
tv.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
oilGunType((String) tv.getText());
}
});
centercontrol.addView(tv);
}
TextView alltext = (TextView) centercontrol.getChildAt(0);
alltext.setTextColor(0xFFFFFFFF);
alltext.setBackgroundResource(R.drawable.sel_cen);
alltext.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
}
/**
* 生成油枪号网格
* @param text
*/
@SuppressLint("WrongConstant")
private void oillallItem(String text){
// final GridLayout GridItem = findViewById(R.id.GridItem);
String str3 = null;
for(final OilInfo oilItem:ItemList){
str3 = oilItem.getOiltype();
final String strall =oilItem.getOilnum()+"号枪"+oilItem.getOiltype();
final TextView item1 = new TextView(this);
final TextView item2 = new TextView(this);
final TextView item3 = new TextView(this);
final TextView item4 =new TextView(this);
final LinearLayout oilList = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(196,160);
param.setMargins(10, 10, 10, 10);
oilList.setGravity(Gravity.CENTER);
oilList.setLayoutParams(param);
oilList.setOrientation(1);
// oilList.setBackgroundResource(R.color.deepash);
oilList.setPadding(0,0,0,10);
LinearLayout.LayoutParams tvParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1);
item1.setGravity(Gravity.CENTER);
item1.setLayoutParams(tvParams);
item1.setTextSize(10);
item1.setPadding(0,1,0,0);
item1.setTextColor(0xFFCECED7);
item1.setText(oilItem.getOiltype());
item2.setGravity(Gravity.CENTER);
item2.setLayoutParams(tvParams);
item2.setTextSize(18);
item2.setTextColor(0xFFD5D5DE);
item2.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
item2.setText(oilItem.getOilnum());
item3.setGravity(Gravity.CENTER);
item3.setLayoutParams(tvParams);
item3.setTextSize(12);
item3.setTextColor(0xFFCECED7);
LinearLayout.LayoutParams tv = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1);
item4.setGravity(Gravity.RIGHT);
item4.setLayoutParams(tv);
item4.setTextSize(8);
item4.setTextColor(0xFFFF0000);
// item3.setText('¥'+oilItem.getOilprice());
oilList.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
item3.setText('¥'+oilItem.getOilprice() + "元/升");
item4.setText(oilItem.getCount());
oilList.setBackgroundResource(R.color.gray3);
int iden = rand.nextInt(N);
String str = String.valueOf (iden);
double factor_int1 = Double.parseDouble(oilItem.getOilprice());//价格字符串转换为double类型
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd hh:mm");//获取当前时间生成订单生成时间
String date = formatter.format(new java.util.Date());
ContentValues values = new ContentValues();
values.put("oilnum",oilItem.getOilnum());
values.put("oiltype",oilItem.getOiltype());
values.put("oilprice",oilItem.getOilprice());
values.put("allprice",factor_int1*50);
values.put("status","1");
values.put("starttime",date);
values.put("oillitre","50");
values.put("iden",str);
db.insert("orderList",null,values);
ContentValues val = new ContentValues();
int count=Integer.parseInt(oilItem.getCount()) + 1;
val.put("cou",count);
String where = "oilnum" + "=" + oilItem.getOilnum();
db.update("oil_info", val , where , null);
Intent intent = new Intent(MainActivity.this, OrderActivity.class);
intent.putExtra("data", strall);
startActivity(intent);
return false;
}
});
String str = oilItem.getCount();
if(!str.equals("0")){
item4.setText(oilItem.getCount());
item3.setText('¥'+oilItem.getOilprice() + "元/升");
oilList.setBackgroundResource(R.color.gray3);
oilList.addView(item4);
oilList.addView(item1);
oilList.addView(item2);
oilList.addView(item3);
// GridItem.addView(oilList);
}else {
oilList.removeView(item3);
oilList.removeView(item4);
oilList.addView(item1);
oilList.addView(item2);
oilList.setBackgroundResource(R.color.deepash);
}
if(text.equals("全部")){
GridItem.addView(oilList);
}
if(text.equals(str3)){
GridItem.addView(oilList);
}
}
}
/**
* 获取数据库油品信息
*/
private void initOildata(){
Cursor cur = db.rawQuery("SELECT * FROM oil_info", null);
while (cur.moveToNext()) {
int oilid = cur.getColumnIndex("oilid");
String oiltype = cur.getString(cur.getColumnIndex("oiltype"));
String oilnum = cur.getString(cur.getColumnIndex("oilnum"));
String oilprice = cur.getString(cur.getColumnIndex("oilprice"));
String count = cur.getString(cur.getColumnIndex("cou"));
OilInfo oilItem=new OilInfo(oilid,oiltype,oilnum,oilprice,count);
ItemList.add(oilItem);
}
cur.close();
}
@SuppressLint("WrongConstant")
private void oilGunType(String text) {
// final GridLayout GridItem = (GridLayout)findViewById(R.id.GridItem);
switch (text){
case "全部":
GridItem.removeAllViews();
oillallItem("全部");
break;
default:
GridItem.removeAllViews();
oillallItem(text);
break;
}
}
}
订单页
由油枪号选择页跳转进入本页面,所有订单都会在这个页面展示出来,其实这个页面后续的完善应该是分类显示订单,也就是点击油枪号后进入的订单列表只有该油枪号的订单。这个页面也没有啥技术点,就是把点击油枪号后生成的订单展示出来。
activity_order.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#121212"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/orderF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myback"
android:paddingLeft="24px"
android:paddingRight="24px"
android:paddingBottom="18px"
android:paddingTop="18px">
<ImageView
android:layout_width="40px"
android:layout_height="40px"
android:layout_marginLeft="8px"
android:layout_marginTop="5px"
android:src="@drawable/reflash"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"
android:textColor="#707076"
android:textSize="36px"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right">
<LinearLayout
android:id="@+id/shuaxin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myback"
android:paddingLeft="24px"
android:paddingTop="18px"
android:paddingRight="24px"
android:paddingBottom="18px"
android:gravity="right">
<ImageView
android:layout_width="40px"
android:layout_height="40px"
android:layout_marginLeft="8px"
android:layout_marginTop="5px"
android:src="@drawable/reflash" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="刷新"
android:textColor="#707076"
android:textSize="36px" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_marginBottom="17dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="择"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="您"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="的"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/oilItem"
android:textColor="#E68E0B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/jia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加"
android:textColor="#FFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/you"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="油"
android:textColor="#FFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/qiang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="订"
android:textColor="#FFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:id="@+id/hao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:text="单"
android:textSize="80px"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(未找到订单请点击刷新或返回操作)"/>
</LinearLayout>
</LinearLayout>
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:columnCount="2"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:verticalSpacing="10dp"
android:id="@+id/allList">
<LinearLayout
android:layout_width="438px"
android:layout_height="218px"
android:orientation="vertical"
android:layout_marginRight="10px"
android:layout_marginLeft="10px"
android:layout_marginTop="10px"
android:layout_marginBottom="10px"
android:gravity="center"
android:background="@drawable/item_list">
<ImageView
android:layout_width="110px"
android:layout_height="124px"
android:src="@drawable/mengbans"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#76767B"
android:text="有订单正在加油中"/>
</LinearLayout>
</GridLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
OrderActivity.java
package com.ljy.study;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
public class OrderActivity extends AppCompatActivity {
TextView textView;
private MyDBOpenHelper myDBHelper;
private Context mContext;
private SQLiteDatabase db;
ArrayList<Order> orderlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
textView = (TextView)findViewById(R.id.oilItem);
mContext = OrderActivity.this;
myDBHelper = new MyDBOpenHelper(mContext, "oilIn.db", null, 1);
db = myDBHelper.getWritableDatabase();
orderlist = new ArrayList<Order>();
OrderSQL();
// OrderList();
//通过Activity.getIntent()获取当前页面接收到的Intent。
Intent intent =getIntent();
//getXxxExtra方法获取Intent传递过来的数据
String msg=intent.getStringExtra("data");
textView.setText(msg);
}
@SuppressLint("WrongConstant")
private void OrderSQL() {
final GridLayout allList = (GridLayout)findViewById(R.id.allList);
Cursor cur = db.rawQuery("SELECT * FROM orderList", null);
while (cur.moveToNext()) {
int orderid = cur.getColumnIndex("orderid");
String oiltype = cur.getString(cur.getColumnIndex("oiltype"));
String oilnum = cur.getString(cur.getColumnIndex("oilnum"));
String oilprice = cur.getString(cur.getColumnIndex("oilprice"));
String allprice = cur.getString(cur.getColumnIndex("allprice"));
String oillitre = cur.getString(cur.getColumnIndex("oillitre"));
String status = cur.getString(cur.getColumnIndex("status"));
String starttime = cur.getString(cur.getColumnIndex("starttime"));
String endtime = cur.getString(cur.getColumnIndex("endtime"));
String iden = cur.getString(cur.getColumnIndex("iden"));
Order oilItem = new Order(orderid,oiltype,oilnum,oilprice,allprice,oillitre,status,starttime,endtime,iden);
orderlist.add(oilItem);
}
cur.close();
for(final Order oilItem:orderlist){
// 价格
final TextView TextItem1 = new TextView(this);
// 加油升数
final TextView TextItem2 = new TextView(this);
// 下单时间
final TextView TextItem3 = new TextView(this);
final LinearLayout TextList = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(438, 218);
param.setMargins(10, 10, 10, 10);
TextList.setGravity(Gravity.CENTER);
TextList.setLayoutParams(param);
TextList.setOrientation(1);
TextList.setBackgroundResource(R.drawable.item_list2);
LinearLayout.LayoutParams tvParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1);
TextItem1.setGravity(Gravity.CENTER);
TextItem1.setLayoutParams(tvParams);
TextItem1.setTextSize(18);
TextItem1.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
TextItem1.setTextColor(0xFFCECED7);
TextItem1.setText("¥" + oilItem.getAllprice());
TextItem2.setGravity(Gravity.CENTER);
TextItem2.setLayoutParams(tvParams);
TextItem2.setTextSize(14);
TextItem2.setTextColor(0xFFA9A9B0);
TextItem2.setText("加油升数" + '\t' + oilItem.getOillitre());
TextItem3.setGravity(Gravity.CENTER);
TextItem3.setLayoutParams(tvParams);
TextItem3.setTextSize(12);
TextItem3.setTextColor(0xFF76767B);
TextItem3.setText(oilItem.getStarttime());
TextList.addView(TextItem1);
TextList.addView(TextItem2);
TextList.addView(TextItem3);
TextList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(OrderActivity.this, SettleActivity.class);
intent.putExtra("Iden",oilItem.getIden());
startActivity(intent);
}
});
if(oilItem.getStatus().equals("1")){
allList.addView(TextList);
}
}
LinearLayout exit = (LinearLayout)findViewById(R.id.orderF);
LinearLayout shuaxin = (LinearLayout)findViewById(R.id.shuaxin);
exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(OrderActivity.this, MainActivity.class);
startActivity(intent);
}
});
shuaxin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(OrderActivity.this, OrderActivity.class);
startActivity(intent);
// onResume();
}
});
}
// @Override
// protected void onResume() {
// super.onResume();
// onCreate(null);
//
// }
}
支付页
在订单页点击订单后会进入支付页,这个页面是展示该订单相关信息和支付订单的页面,没有真正的支付,只是模拟支付订单后,订单列表会删除相关的订单。
activity_settle.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#121212"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/orderF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myback"
android:paddingLeft="24px"
android:paddingRight="24px"
android:paddingBottom="18px"
android:paddingTop="18px">
<ImageView
android:layout_width="40px"
android:layout_height="40px"
android:layout_marginLeft="8px"
android:layout_marginTop="5px"
android:src="@drawable/reflash"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"
android:textColor="#707076"
android:textSize="36px"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right">
<LinearLayout
android:id="@+id/shuaxin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="24px"
android:paddingTop="18px"
android:paddingRight="24px"
android:paddingBottom="18px"
android:gravity="right">
<TextView
android:id="@+id/skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="#707076"
android:textSize="36px" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_marginBottom="17dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="结"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="算"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="认"
android:textColor="#FFFFFF"
android:textSize="80px"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="350dp"
android:layout_height="wrap_content">
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:paddingLeft="30dp"
android:paddingTop="15dp"
android:paddingRight="30dp"
android:paddingBottom="15dp"
android:background="@drawable/item_list"
android:layout_width="350dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="枪号"
android:textSize="18dp" />
<TextView
android:id="@+id/oilnum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="油品"
android:textSize="18dp" />
<TextView
android:id="@+id/oiltype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="油品单价"
android:textSize="18dp" />
<TextView
android:id="@+id/oilprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="加油升数"
android:textSize="18dp" />
<TextView
android:id="@+id/oillitre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@drawable/orsettle"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="合计:"
android:textSize="18dp" />
<TextView
android:id="@+id/allyuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="满减优惠"
android:textSize="18dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="优惠 "
android:textSize="18dp" />
<TextView
android:id="@+id/oilfavor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-¥5.00"
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@drawable/orsettle"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="应付:"
android:textSize="18dp" />
<TextView
android:id="@+id/allprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:paddingLeft="30dp"
android:paddingTop="15dp"
android:paddingRight="30dp"
android:paddingBottom="15dp"
android:layout_marginTop="40dp"
android:layout_width="350dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="支付方式"
android:textColor="#F79502"
android:gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_marginTop="20dp"
android:layout_marginRight="5dp"
android:gravity="center"
android:background="#2E2311"
android:id="@+id/facepay"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/facepay"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="微信刷脸支付"
android:textColor="#F79502"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="5dp"
android:gravity="center"
android:background="#2E2311"
android:id="@+id/qrpay"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/qrpay"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#F79502"
android:text="二维码支付"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
SettleActivity.java
package com.ljy.study;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
public class SettleActivity extends AppCompatActivity {
private SQLiteDatabase db;
private MyDBOpenHelper myDBHelper;
private Context mContext;
private int dt = 30;
private TextView tv_dt;
private Runnable runnable;
private Timer timer;
private boolean isTime;
private LinearLayout shuaXin;
// OilInfo oilItem2;
@SuppressLint("HandlerLeak")
private Handler handler = new Handler(){
@SuppressLint("SetTextI18n")
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
tv_dt.setText(dt + "s");
dt--;
if(dt==0){
//关闭定时器
timer.cancel();
startMainActivity();
}
}
}
};
TextView oilNum,oilType,oilPrice,oilLitre,allYuan,allPrice;
ArrayList<Order> orderlist;
ArrayList<OilInfo> ItemList;
CountDownTimer time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settle);
LinearLayout exit = (LinearLayout)findViewById(R.id.orderF);
mContext = SettleActivity.this;
myDBHelper = new MyDBOpenHelper(mContext, "oilIn.db", null, 1);
db = myDBHelper.getWritableDatabase();
orderlist = new ArrayList<Order>();
ItemList = new ArrayList<OilInfo>();
shuaXin = (LinearLayout)findViewById(R.id.shuaxin);
tv_dt = (TextView) findViewById(R.id.skip);
isTime = false;
shuaXin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
timer.cancel();
startMainActivity();
}
});
orderList();
// 返回上一页
exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// finish();
if(isTime){
timer.cancel();
}
Intent intent = new Intent(SettleActivity.this, OrderActivity.class);
startActivity(intent);
}
});
}
private void orderList() {
oilNum = (TextView)findViewById(R.id.oilnum);
oilType = (TextView)findViewById(R.id.oiltype);
oilPrice = (TextView)findViewById((R.id.oilprice));
oilLitre = (TextView)findViewById(R.id.oillitre);
allYuan = (TextView)findViewById(R.id.allyuan);
allPrice = (TextView)findViewById(R.id.allprice);
String num = null,type = null,litre1 = null,price1=null,price2=null;
Intent intent = getIntent();
final String msg = intent.getStringExtra("Iden");
Cursor cur = db.rawQuery("SELECT * FROM orderList", null);
while (cur.moveToNext()) {
int orderid = cur.getColumnIndex("orderid");
String oiltype = cur.getString(cur.getColumnIndex("oiltype"));
String oilnum = cur.getString(cur.getColumnIndex("oilnum"));
String oilprice = cur.getString(cur.getColumnIndex("oilprice"));
String allprice = cur.getString(cur.getColumnIndex("allprice"));
String oillitre = cur.getString(cur.getColumnIndex("oillitre"));
String status = cur.getString(cur.getColumnIndex("status"));
String starttime = cur.getString(cur.getColumnIndex("starttime"));
String endtime = cur.getString(cur.getColumnIndex("endtime"));
String iden = cur.getString(cur.getColumnIndex("iden"));
Order oilItem = new Order(orderid,oiltype,oilnum,oilprice,allprice,oillitre,status,starttime,endtime,iden);
orderlist.add(oilItem);
}
cur.close();
for(final Order oilItem:orderlist){
String s=String.valueOf(oilItem.getIden());
if(s.equals(msg)){
num = oilItem.getOilnum();
price1 = oilItem.getOilprice();
type = oilItem.getOiltype();
litre1 = oilItem.getOillitre();
price2 = oilItem.getAllprice();break;
}
}
double factor_int1 = Double.parseDouble(price2);
oilNum.setText(num);
oilPrice.setText("¥"+price1);
oilType.setText(type);
oilLitre.setText(litre1);
allYuan.setText("¥"+price2);
allPrice.setText("¥"+(factor_int1-5.00));
// 获取相关油品的订单数量
Cursor oilcur = db.rawQuery("SELECT * FROM oil_info", null);
while (oilcur.moveToNext()) {
int oilid = oilcur.getColumnIndex("oilid");
String oiltype = oilcur.getString(oilcur.getColumnIndex("oiltype"));
String oilnum = oilcur.getString(oilcur.getColumnIndex("oilnum"));
String oilprice = oilcur.getString(oilcur.getColumnIndex("oilprice"));
String count = oilcur.getString(oilcur.getColumnIndex("cou"));
OilInfo oilItem2=new OilInfo(oilid,oiltype,oilnum,oilprice,count);
ItemList.add(oilItem2);
}
oilcur.close();
String con = null;
for(final OilInfo oilItem2:ItemList){
if(num.equals(oilItem2.getOilnum())){
con = oilItem2.getCount();
break;
}
}
LinearLayout facepay = (LinearLayout)findViewById(R.id.facepay);
final String finalNum = num;
final String finalCon = con;
facepay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd hh:mm");//获取当前时间生成订单生成时间
String date = formatter.format(new java.util.Date());
ContentValues cv = new ContentValues();
cv.put("status", "0");//第一个参数是列名,第二个参数是要放入的值
cv.put("endtime",date);
String where = "iden" + "=" + msg;
db.update("orderList", cv , where , null);
if(Integer.parseInt(finalCon) > 0){
ContentValues cn = new ContentValues();
int count=Integer.parseInt(finalCon) - 1;
cn.put("cou", count);//第一个参数是列名,第二个参数是要放入的值
String where2 = "oilnum" + "=" + finalNum;
db.update("oil_info", cn, where2 , null);
Toast toast=Toast.makeText(SettleActivity.this,"订单支付完成,返回订单列表页,交易完成时间"+date,Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
countDown();
}else{
Toast toast=Toast.makeText(SettleActivity.this,"订单支付完成,请勿重复操作",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
startActivity(new
Intent(SettleActivity.this,MainActivity.class));
}
}
});
LinearLayout qrpay = (LinearLayout)findViewById(R.id.qrpay);
qrpay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd hh:mm");//获取当前时间生成订单生成时间
String date = formatter.format(new java.util.Date());
ContentValues cv = new ContentValues();
cv.put("status", "0");//第一个参数是列名,第二个参数是要放入的值
cv.put("endtime",date);
String where = "iden" + "=" + msg;
db.update("orderList", cv , where , null);
if(Integer.parseInt(finalCon) > 0){
ContentValues cn = new ContentValues();
int count=Integer.parseInt(finalCon) - 1;
cn.put("cou", count);//第一个参数是列名,第二个参数是要放入的值
String where2 = "oilnum" + "=" + finalNum;
db.update("oil_info", cn, where2 , null);
Toast toast=Toast.makeText(SettleActivity.this,"订单支付完成,返回订单列表页,交易完成时间"+date,Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
countDown();
}else{
Toast toast=Toast.makeText(SettleActivity.this,"订单支付完成,请勿重复操作",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
startActivity(new
Intent(SettleActivity.this,MainActivity.class));
}
// Skip();
}
});
}
private void countDown(){
shuaXin.setBackgroundResource(R.drawable.myback);
timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
};
//开启计时器,时间间隔为1000ms
timer.schedule(timerTask,1,1000);
isTime = true;
}
private void startMainActivity() {
startActivity(new
Intent(SettleActivity.this,MainActivity.class));
timer.cancel();
//关闭当前页面
finish();
}
protected void onDestroy() {
super.onDestroy();
//移除消息
handler.removeCallbacksAndMessages(null);
}
}
数据相关代码
以上就是我的demo功能实现的代码了,下面是我的关于数据建立和获取数据的方法。
建立MyDBOpenHelper.java文件,这个文件是建立SQLite数据库的,
package com.ljy.study;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDBOpenHelper extends SQLiteOpenHelper {
public MyDBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
int version) { super(context, name, factory, version); }
@Override
//数据库第一次创建时被调用
public void onCreate(SQLiteDatabase db) {
// 创建油信息
// 使用带占位符的SQL语句,这个是执行修改数据库内容的sql语句用的
db.execSQL( "CREATE TABLE oil_info(oilid INTEGER PRIMARY KEY AUTOINCREMENT,oiltype INTEGER,oilnum VARCHAR(10),oilprice VAECHAR(10),cou VARCHAR(10)) ");
db.execSQL( "CREATE TABLE oilType(typeid INTEGER PRIMARY KEY AUTOINCREMENT,oiltype VARCHAR(20))");
db.execSQL( "CREATE TABLE orderList(orderid INTEGER PRIMARY KEY AUTOINCREMENT,iden VARCHAR(100),oilnum VARCHAR(10),oiltype VARCHAR(20),oilprice VARCHAR(20),allprice VARCHAR(20),oillitre VARCHAR(20),status VARCHAR(5),starttime VARCHAR(20),endtime VARCHAR(20))");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('92#','1','15.6','0')");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('92#','2','15.7','0')");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('95#','3','15.9','0')");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('95#','4','16','0')");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('98#','5','17','0')");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('98#','6','18','0')");
db.execSQL("INSERT INTO oil_info(oiltype,oilnum,oilprice,cou) values('柴油','7','19','0')");
db.execSQL("INSERT INTO oilType(oiltype) values('全部')");
db.execSQL("INSERT INTO oilType(oiltype) values('92#')");
db.execSQL("INSERT INTO oilType(oiltype) values('98#')");
db.execSQL("INSERT INTO oilType(oiltype) values('95#')");
db.execSQL("INSERT INTO oilType(oiltype) values('柴油')");
// ContentValues values = new ContentValues();
// values.put("oilnum","1");
// values.put("oiltype","92#");
// values.put("oilprice","12");
// values.put("allprice","120");
// values.put("status","1");
// values.put("starttime","5-29 11:02");
// values.put("oillitre","72");
// db.insert("orderList",null,values);
}
//软件版本号发生改变时调用
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) ");
}
}
获取油枪信息,建立OilInfo.java文件获取油枪信息表内容。
package com.ljy.study;
public class OilInfo {
private int oilid;
private String oiltype;
private String oilnum;
private String oilprice;
private String count;
public int get_id() {
return oilid;
}
public void set_id(int oilid) {
this.oilid = oilid;
}
public String getOiltype() {
return oiltype;
}
public void setOiltype(String oiltype) {
this.oiltype = oiltype;
}
public String getOilnum() {
return oilnum;
}
public void setOilnum(String oilnum) {
this.oilnum = oilnum;
}
public String getOilprice() {
return oilprice;
}
public void setOilprice(String oilprice) {
this.oilprice = oilprice;
}
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
@Override
public String toString() {
return oiltype + ", " + oilnum + ", " + oilprice + "," + count;
}
public OilInfo(int oilid, String oiltype, String oilnum, String oilprice,String count) {
super();
this.oilid = oilid;
this.oiltype = oiltype;
this.oilnum = oilnum;
this.oilprice = oilprice;
this.count = count;
}
}
获取油品信息,建立OilType.java文件
package com.ljy.study;
public class OilType {
private int typeid;
private String oiltype;
public int get_id() {
return typeid;
}
public void set_id(int typeid) {
this.typeid = typeid;
}
public String getOiltype() {
return oiltype;
}
public void setOiltype(String oiltype) {
this.oiltype = oiltype;
}
@Override
public String toString() {
return oiltype;
}
public OilType(int typeid, String oiltype) {
super();
this.typeid = typeid;
this.oiltype = oiltype;
}
}
获取订单列表信息,建立Order.java
package com.ljy.study;
public class Order {
private int orderid;
private String oiltype;
private String oilnum;
private String oilprice;
private String allprice;
private String oillitre;//加油升数
private String status;//订单状态 1为未完成,0为已完成
private String starttime;//订单生成时间
private String endtime;//订单完成时间
private String iden;//订单标识唯一
public int get_id() {
return orderid;
}
public void set_id(int oilid) {
this.orderid = oilid;
}
public String getOiltype() {
return oiltype;
}
public void setOiltype(String oiltype) {
this.oiltype = oiltype;
}
public String getOilnum() {
return oilnum;
}
public void setOilnum(String oilnum) {
this.oilnum = oilnum;
}
public String getOilprice() {
return oilprice;
}
public void setOilprice(String oilprice) {
this.oilprice = oilprice;
}
public String getAllprice() {
return allprice;
}
public void setAllprice(String allprice) {
this.allprice = allprice;
}
public String getOillitre() {
return oillitre;
}
public void setOillitre(String oillitre) {
this.oillitre = oillitre;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getStarttime() {
return starttime;
}
public void setStarttime(String starttime) {
this.starttime = starttime;
}
public String getEndtime() {
return endtime;
}
public void setEndtime(String endtime) {
this.endtime = endtime;
}
public String getIden(){
return iden;
}
public void setIden(String iden){
this.iden = iden;
}
@Override
public String toString() {
return oiltype + ", " + oilnum + ", " + oilprice+ ", " +allprice + ", " + oillitre + ", " + status + ", " + starttime + ", " + endtime + "," + iden;
}
public Order(int orderid, String oiltype, String oilnum, String oilprice,String allprice,String oillitre,String status,String starttime,String endtime,String iden) {
super();
this.orderid = orderid;
this.oiltype = oiltype;
this.oilnum = oilnum;
this.oilprice = oilprice;
this.allprice = allprice;
this.oillitre = oillitre;
this.status = status;
this.starttime = starttime;
this.endtime = endtime;
this.iden = iden;
}
}