1.******************************************************Shopping*******************************************
public class Shopping {
private int _id;
private String name;
private String color;
private String price;
private String num;
private String address;
private boolean isChecked;
private int picId;
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
}
public int getPicId() {
return picId;
}
public void setPicId(int picId) {
this.picId = picId;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Shopping() {
}
public Shopping(int _id, String name, String color, String price, String num, String address){
this._id = _id;
this.name = name;
this.color = color;
this.price = price;
this.num = num;
this.address = address;
}
public Shopping(int _id, String name, String color, String price, String num) {
this._id = _id;
this.name = name;
this.color = color;
this.price = price;
this.num = num;
}
@Override
public String toString() {
return "Shopping{" +
"_id=" + _id +
", name='" + name + '\'' +
", color='" + color + '\'' +
", price='" + price + '\'' +
", num='" + num + '\'' +
", address='" + address + '\'' +
'}';
}
}
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by Administrator on 2017/8/2.
*/
public class MySQLite extends SQLiteOpenHelper{
public MySQLite(Context context) {
super(context, "h.db", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table shopping(" +
"_id integer primary key autoincrement," +
"name varchar(0)," +
"color varchar(0)," +
"price varchar(0)," +
"num varchar(0))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
3.********************************ShoppingDao*****************************
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.administrator.shopping_king.bean.Shopping;
import java.util.ArrayList;
/**
* Created by Administrator on 2017/8/2.
*/
public class ShoppingDao {
private MySQLite mySQLite;
private ArrayList<Shopping> list;
public ShoppingDao(Context con) {
mySQLite = new MySQLite(con);
}
// 添加
public long addDate(String name, String color, String price, String num,String address) {
SQLiteDatabase db = mySQLite.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("color", color);
values.put("price", price);
values.put("num", num);
// values.put("address", address);
long insert = db.insert("shopping", null, values);
// db.close();
return insert;
}
// 查询
@SuppressLint("NewApi")
public ArrayList<Shopping> query() {
list = new ArrayList<Shopping>();
SQLiteDatabase db = mySQLite.getWritableDatabase();
Cursor query = db.query(false, "shopping", null, null, null, null, null,
null, null, null);
while (query.moveToNext()) {
int _id = query.getInt(query.getColumnIndex("_id"));
String name = query.getString(query.getColumnIndex("name"));
String color = query.getString(query.getColumnIndex("color"));
String price = query.getString(query.getColumnIndex("price"));
String num = query.getString(query.getColumnIndex("num"));
list.add(new Shopping(_id, name, color, price,num));
}
db.close();
return list;
}
// 模糊查询
@SuppressLint("NewApi")
public ArrayList<Shopping> query(String ename) {
list = new ArrayList<Shopping>();
SQLiteDatabase db = mySQLite.getWritableDatabase();
Cursor query = db.query("shopping", null, "name like ?", new String[]{"%"+ename+"%"} , null, null, null);
while (query.moveToNext()) {
int _id = query.getInt(query.getColumnIndex("_id"));
String name = query.getString(query.getColumnIndex("name"));
String color = query.getString(query.getColumnIndex("color"));
String price = query.getString(query.getColumnIndex("price"));
String num = query.getString(query.getColumnIndex("num"));
list.add(new Shopping(_id, name, color, price,num));
}
db.close();
return list;
}
// 删除
public int delete(int _id) {
SQLiteDatabase db = mySQLite.getWritableDatabase();
int d = db.delete("shopping", "_id=?", new String[] { _id + "" });
db.close();
return d;
}
// 修改
public int update(int _id, String name, String color, String price) {
SQLiteDatabase db = mySQLite.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("color", color);
values.put("price", price);
values.put("_id", _id);
int u = db.update("shopping", values, "_id=?", new String[] { _id + "" });
db.close();
return u;
}
}
4.********************************MainActivity***********************************
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import com.example.administrator.shopping_king.bean.Shopping;
import com.example.administrator.shopping_king.db.MySQLite;
import com.example.administrator.shopping_king.db.ShoppingDao;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView t1;
private TextView t2;
private TextView t3;
private ViewPager viewPager;
private TextView t11;
private TextView t22;
private TextView t33;
private MySQLite mySQLite;
private ShoppingDao dao;
private ArrayList<Shopping> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 去掉头部
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dao=new ShoppingDao(this);
//初始化组件
initView();
initData();
}
private void initData() {
mySQLite = new MySQLite(this);
SQLiteDatabase readableDatabase = mySQLite.getReadableDatabase();
dao = new ShoppingDao(this);
list=new ArrayList<Shopping>();
for (int i=0;i<100;i++){
dao.addDate("香蕉"+i, "黄色", "123","10","北京海淀"+i);
}
//给ViewPager设置适配器
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
//根据ViewPager 索引 返回相应Fragment
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Shop_Fragment();
break;
case 1:
fragment = new Manage_Fragment();
break;
case 2:
fragment = new State_Fragment();
break;
default:
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
});
//给ViewPager设置滑动监听
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//根据position改变游标状态
switch (position) {
case 0:
t11.setBackgroundColor(Color.RED);
t22.setBackgroundColor(Color.parseColor("#00000000"));
t33.setBackgroundColor(Color.parseColor("#00000000"));
break;
case 1:
t22.setBackgroundColor(Color.RED);
t11.setBackgroundColor(Color.parseColor("#00000000"));
t33.setBackgroundColor(Color.parseColor("#00000000"));
break;
case 2:
t33.setBackgroundColor(Color.RED);
t22.setBackgroundColor(Color.parseColor("#00000000"));
t11.setBackgroundColor(Color.parseColor("#00000000"));
break;
default:
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initView() {
t1 = (TextView) findViewById(R.id.t1);
t2 = (TextView) findViewById(R.id.t2);
t3 = (TextView) findViewById(R.id.t3);
t11 = (TextView) findViewById(R.id.t11);
t22 = (TextView) findViewById(R.id.t22);
t33 = (TextView) findViewById(R.id.t33);
viewPager = (ViewPager) findViewById(R.id.viewPager);
// 设置监听
t1.setOnClickListener(this);
t2.setOnClickListener(this);
t3.setOnClickListener(this);
t11.setOnClickListener(this);
t22.setOnClickListener(this);
t33.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
//点击选项卡 跳转到对应的Fragment页
case R.id.t1:
viewPager.setCurrentItem(0);
break;
case R.id.t2:
viewPager.setCurrentItem(1);
break;
case R.id.t3:
viewPager.setCurrentItem(2);
break;
default:
break;
}
}
}
5.***********************Shop_Fragment******************************
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.administrator.shopping_king.bean.Shopping;
import com.example.administrator.shopping_king.db.MySQLite;
import com.example.administrator.shopping_king.db.ShoppingDao;
import java.util.ArrayList;
/**
* Created by Administrator on 2017/8/2.
*/
public class Shop_Fragment extends Fragment{
private View view;
private ListView listView;
private TextView tv_sum;
private ArrayList<Shopping> list;
private MySQLite mySQLite;
private ShoppingDao dao;
private MyBaseAdapter myBaseAdapter;
// 初始价格和个数都是0
int sum = 0;
int count = 0;
// 成员位置定义progress
int progress = 0;
private ProgressDialog dialog;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == 0) {
// 当收到消息时,刷新界面
myBaseAdapter.notifyDataSetChanged();
//刷新一个总价格
tv_sum.setText("总价格:"+sum);
}
};
};
private Button bt_pay;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.shop_fragment, container, false);
listView = (ListView) view.findViewById(R.id.listView);
tv_sum = (TextView) view.findViewById(R.id.tv_sum);
bt_pay = (Button)view.findViewById(R.id.bt_pay);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// 初始化弹框
dialog = new ProgressDialog(getActivity());
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setTitle("正在删除...");
dialog.setMax(100);
mySQLite = new MySQLite(getActivity());
dao = new ShoppingDao(getActivity());
list=new ArrayList<Shopping>();
list = dao.query();
SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(getActivity(),
R.layout.shop_list, null, new String[] { "name", "color", "price" },
new int[] { R.id.tv_name, R.id.tv_color, R.id.tv_price });
bt_pay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (sum == 0) {
Toast.makeText(getActivity(), "请选择商品再购买", Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra("sum", sum);
intent.putExtra("count", count);
// Log.i(TAG, "count" + count);
startActivity(intent);
}
});
// 实例化数据适配器
myBaseAdapter = new MyBaseAdapter();
listView.setAdapter(myBaseAdapter);
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
final int position, long arg3) {
dialog.show();
new Thread() {
public void run() {
while (progress < 100) {
progress = progress + 5;
dialog.setProgress(progress);
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (progress == 100) {
// 弹框消失
dialog.dismiss();
// progress=0;
progress = 0;
//在删除之前,应该先判断要删除的条目是否被选中了,如果是,要从总价格中减去该条目的价格,和个数
if(list.get(position).isChecked()){
sum=sum-Integer.parseInt(list.get(position).getPrice());
count--;
}
// 删除集合中该条目内容
list.remove(position);
// 刷新界面
handler.sendEmptyMessage(0);
}
};
}.start();
return false;
}
});
}
/**
* 支付点击事件
*
* @param
*/
// public void pay(View v) {
//
// if (sum == 0) {
// Toast.makeText(getActivity(), "请选择商品再购买", Toast.LENGTH_SHORT).show();
// return;
// }
// Intent intent = new Intent(getActivity(), SecondActivity.class);
// intent.putExtra("sum", sum);
// intent.putExtra("count", count);
//
Log.i(TAG, "count" + count);
// startActivity(intent);
// }
class MyBaseAdapter extends BaseAdapter {
private ViewHolder viewHolder;
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
convertView = View.inflate(getActivity(),
R.layout.shop_list, null);
viewHolder = new ViewHolder();
convertView.setTag(viewHolder);
viewHolder.tv_name = (TextView) convertView
.findViewById(R.id.tv_name);
viewHolder.tv_price = (TextView) convertView
.findViewById(R.id.tv_price);
viewHolder.checkBox = (CheckBox) convertView
.findViewById(R.id.checkBox);
viewHolder.imageView = (ImageView) convertView
.findViewById(R.id.imageView);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// onCheckedChangeListener
// 在listView优化的时候,会因为重复监听导致界面bug,建议使用onClickListener
// viewHolder.checkBox.setOnCheckedChangeListener(new
// OnCheckedChangeListener() {
//
// @Override
// public void onCheckedChanged(CompoundButton buttonView, boolean
// isChecked) {
// productsList.get(position).setChecked(isChecked);
// if(isChecked){
// sum = sum
// + Integer.parseInt(productsList.get(position)
// .getPrice());
// count++;
// }else{
// sum = sum
// - Integer.parseInt(productsList.get(position)
// .getPrice());
// count--;
// }
//
// tv_sum.setText("总价格:" + sum);
// }
// });
viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = viewHolder.checkBox.isChecked();
// 如果点击了,并且checkBox在这个时候选中了
if (checked) {
// 给javaBean 设置选中状态为true
list.get(position).setChecked(true);
sum = sum
+ Integer.parseInt(list.get(position)
.getPrice());
count++;
}else{
// 给javaBean 设置选中状态为true
list.get(position).setChecked(false);
sum = sum
- Integer.parseInt(list.get(position)
.getPrice());
count--;
}
tv_sum.setText("总价格"+sum);
}
});
// 设置数据
viewHolder.tv_name.setText(list.get(position).getName());
viewHolder.tv_price.setText(list.get(position).getPrice());
viewHolder.imageView.setImageResource(list.get(position)
.getPicId());
// checkBox 给checkBox设置当前的选中状态,如果对象中存的是true,代表是被选中,如果是false,之前没有被选中过
viewHolder.checkBox.setChecked(list.get(position)
.isChecked());
return convertView;
}
}
class ViewHolder {
CheckBox checkBox;
TextView tv_name;
TextView tv_price;
ImageView imageView;
}
}
6.************************************SecondActivity**********************************
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
int sum = intent.getIntExtra("sum", 0);
int count = intent.getIntExtra("count", 0);
TextView tv_sum = (TextView) findViewById(R.id.tv_sum);
TextView tv_count = (TextView) findViewById(R.id.tv_count);
//设置到textView上
tv_sum.setText(sum+"");
tv_count.setText(count+"");
}
}
7.*****************************activity_main*******************************
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.administrator.shopping_king.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_weight="9"
android:layout_height="0dp" >
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/t1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ccc"
android:gravity="center"
android:padding="10dp"
android:text="购 物 车" />
<TextView
android:id="@+id/t11"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#ff0000" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:id="@+id/t2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ccc"
android:gravity="center"
android:padding="10dp"
android:text="订单管理" />
<TextView
android:id="@+id/t22"
android:layout_width="match_parent"
android:layout_height="2dp"
android:gravity="center" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:id="@+id/t3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ccc"
android:gravity="center"
android:padding="10dp"
android:text="订单状态" />
<TextView
android:id="@+id/t33"
android:layout_width="match_parent"
android:layout_height="2dp"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
8.***********************activity_second****************************
<LinearLayout 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:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购买成功" />
<TextView
android:id="@+id/tv_sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout 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:orientation="vertical" >
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tv_sum"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="总价格" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="pay"
android:id="@+id/bt_pay"
android:text="支付" />
</LinearLayout>
</LinearLayout>
10.******************************shop_list**********************************
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- focusable 是否抢夺(获取)焦点 -->
<CheckBox
android:id="@+id/checkBox"
android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_marginLeft="60dp"
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/checkBox"
android:text="商品名称" />
<TextView
android:layout_marginLeft="60dp"
android:id="@+id/tv_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_name"
android:layout_toRightOf="@id/checkBox"
android:text="商品颜色" />
<TextView
android:layout_marginLeft="60dp"
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_name"
android:layout_toRightOf="@id/checkBox"
android:text="商品价格" />
<ImageView
android:layout_marginLeft="60dp"
android:id="@+id/imageView"
android:layout_toRightOf="@id/tv_price"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
11.**********************清单文件——读取权限**********************************
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>