商品展示案例 (数据存储和访问

来源:互联网 发布:舞蹈软件哪个好 编辑:程序博客网 时间:2024/05/24 15:40

结果如下:


activity_main.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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_margin="8dp"
    tools:context="cn.edu.bzu.shopshow.MainActivity">


    <LinearLayout
        android:id="@+id/addLL"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        
    <EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="商品名称"
        android:layout_weight="1"
        android:id="@+id/nameET" />


    <EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="金额"
        android:layout_weight="1"
        android:id="@+id/balanceET" />


        <ImageView
            android:onClick="add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_input_add"
            android:id="@+id/addIV" />
</LinearLayout>


    <ListView
        android:id="@+id/accountLV"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:layout_below="@+id/addLL">
    </ListView>
</LinearLayout>


item.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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="10dp">


    <TextView
        android:text="13"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/idTV"
        android:layout_weight="1" 
        android:textColor="#000000"
        android:textSize="20sp" />


    <TextView
        android:text="PQ"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/nameTV"
        android:layout_weight="2"
        android:singleLine="true"
        android:textColor="#000000"
        android:textSize="20sp"/>


    <TextView
        android:text="12345"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/balanceTV"
        android:layout_weight="2" 
        android:singleLine="true"
        android:textColor="#000000"
        android:textSize="20sp"/>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@android:drawable/arrow_up_float"
        android:id="@+id/upIV"
        android:layout_marginBottom="2dp" />


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@android:drawable/arrow_down_float"
        android:id="@+id/downIV" />
        
    </LinearLayout>   
    
    <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            app:srcCompat="@android:drawable/ic_menu_delete"
            android:id="@+id/delectIV" />
    
</LinearLayout>


dao//MyHelper.java

package cn.edu.bzu.shopshow.dao;


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.Settings;


/**
 * Created by Administrator on 2017/4/28.
 */


public  class MyHelper extends SQLiteOpenHelper {


    public MyHelper(Context context) {
        super(context,"itcast.db",null,2);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        System.out.println("onCreate");
        db.execSQL("CREATE TABLE account(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),balance INTEGER)");
    }


    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("onUpgrade");


    }
}

Account.java

package cn.edu.bzu.shopshow.bean;


/**
 * Created by Administrator on 2017/5/2.
 */


public class Account {
    private long id;
    private String name;
    private int balance;


    public long getId() {
        return id;
    }


    public void setId(long id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public int getBalance() {
        return balance;
    }


    public void setBalance(int balance) {
        this.balance = balance;
    }


    public Account(long id, String name, int balance) {
        super();
        this.id = id;
        this.name = name;
        this.balance = balance;
    }


    public Account(String name, int balance) {
        super();
        this.name = name;
        this.balance = balance;
    }
    public Account(){
        super();
    }
    public String toString(){
        return "[序号:"+id+",商品名称:"+name+",余额:"+balance+"]";
    }
}

AccountDao.java

package cn.edu.bzu.shopshow.dao;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.renderscript.Sampler;


import java.util.ArrayList;
import java.util.List;


import cn.edu.bzu.shopshow.bean.Account;


/**
 * Created by Administrator on 2017/5/2.
 */


public class AccountDao {
    private MyHelper helper;
    public AccountDao(Context context){
        helper=new MyHelper(context);
    }
    public void insert(Account account){
        SQLiteDatabase db=helper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("name",account.getName());
        values.put("balance",account.getBalance());
        long id=db.insert("account",null,values);
        account.setId(id);
        db.close();
    }
    public int delete(long id){
        SQLiteDatabase db=helper.getWritableDatabase();
        int count=db.delete("account","_id=?",new String[] {id+""});
        db.close();
        return count;
    }
    public int update(Account account){
        SQLiteDatabase db=helper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("name",account.getName());
        values.put("balance",account.getBalance());
        int count=db.update("account",values,"_id=?",new String[]{account.getId()+""});
        db.close();
        return  count;
    }
    public List<Account> queryAll(){
        SQLiteDatabase db=helper.getReadableDatabase();
        Cursor c=db.query("account",null,null,null,null,null,"balance DESC");
        List<Account> list=new ArrayList<Account>();
        While(c.moveToNext()){
            long id=c.getLong()(c.getColumnIndex("_id"));
Stringname=c.getString(1);
int?balance=c.getInt(2);
list.add(new?Account(id,name,balance));


}
c.close();
db.close();
return?list;
}
}


package?cn.edu.bzu.productshow;??
import?android.app.Activity;??
import?android.app.AlertDialog.Builder;??
import?android.content.DialogInterface;??
import?android.os.Bundle;??
import?android.view.View;??
import?android.view.View.OnClickListener;??
import?android.view.ViewGroup;??
import?android.widget.AdapterView;??
import?android.widget.AdapterView.OnItemClickListener;??
import?android.widget.BaseAdapter;??
import?android.widget.EditText;??
import?android.widget.ImageView;??
import?android.widget.ListView;??
import?android.widget.TextView;??
import?android.widget.Toast;??
import?cn.edu.bzu.productshow.Bean.Account;??
??
import?java.util.List;??
import?java.util.Locale;??
??
import?cn.edu.bzu.productshow.Dao.AccountDao;??
??
public?class?MainActivity?extends?Activity?{??
//需要适配的数据集合??
????private?List<Account>?list;??
????//需要增删改查操作类??
????private?AccountDao?dao;??
????//输入姓名的edittext??
????private?EditText?nameET;??
????//输入金额的edittext??
????private?EditText?balanceET;??
????//适配器??
????private?MyAdapter?adapter;??
????//Listview??
????private?ListView?accountLV;??
????@Override??
????protected?void?onCreate(Bundle?savedInstanceState)?{??
????????super.onCreate(savedInstanceState);??
????????setContentView(R.layout.activity_main);??
????????//初始化控件??
????????initView();??
????????dao=new?AccountDao(this);??
????????//从数据库查询所有数据??
????????list=dao.queryAll();??
????????adapter=new?MyAdapter();??
????????accountLV.setAdapter(adapter);//给ListView添加适配器(自动把数据生成条目)??
????}??
????//初始化控件??
????private?void?initView()??
????{??
????????accountLV=(ListView)findViewById(R.id.accountLV);??
????????nameET=(EditText)?findViewById(R.id.nameET);??
????????balanceET=(EditText)findViewById(R.id.balanceET);??
????????//添加监听器,监听条目点击事件??
????????accountLV.setOnItemClickListener(new?MyOnItemClickListener());??
????}??
????//activity_main.xml对应的inageview的点击事件触发的方法??
????public?void?add(View?v)??
????{??
????????String?name=nameET.getText().toString().trim();??
????????String?balance=balanceET.getText().toString().trim();??
????????//三目运算balance.equals("")则等于0??
????????//如果balance不是空字符串,则进行强制类型转换??
????????Account?a=new?Account(name,?balance.equals("")?0:Integer.parseInt(balance));??
????????dao.insert(a);//插入数据库??
????????list.add(a);//插入集合??
????????adapter.notifyDataSetChanged();//刷新界面??
????????//选中最后一个??
????????accountLV.setSelection(accountLV.getCount()-1);??
????????nameET.setText("");??
????????balanceET.setText("");??
????}??
????//自定义一个适配器(把数据装到ListView的工具)??
????private?class?MyAdapter?extends?BaseAdapter{??
????????public?int?getCount(){???//获取条目总数??
????????????return?list.size();??
????????}??
????????public?Object?getItem(int?position)?//根据位置获取对象??
????????{??
????????????return??list.get(position);??
????????}??
????????public?long?getItemId(int?position)?//根据位置获取id??
????????{??
????????????return??position;??
????????}??
????????//获取一个条目视图??
????????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)??
????????{??
????????????//重用converView??
?????????????View?item=convertView!=null?convertView:View.inflate(getApplicationContext(),R.layout.item,null);??
????????????//获取该视图中的textview??
????????????TextView?idTV=(TextView)?item.findViewById(R.id.idTV);??
????????????TextView?nameTV=(TextView)?item.findViewById(R.id.nameTV);??
????????????TextView?balanceTV=(TextView)?item.findViewById(R.id.balanceTV);??
????????????//根据当前位置获取Account对象??
????????????final?Account?a=list.get(position);??
????????????//把Account对象中的数据放到textview中??
????????????idTV.setText(a.getId()+"");??
????????????nameTV.setText(a.getName());??
????????????balanceTV.setText(a.getBalance()+"");??
????????????ImageView?upTV=(ImageView)?item.findViewById(R.id.upIV);??
????????????ImageView?downTV=(ImageView)?item.findViewById(R.id.downIV);??
????????????ImageView?deleteTV=(ImageView)?item.findViewById(R.id.deleteIV);??
????????????//向上箭头的事件触发方法??
????????????upTV.setOnClickListener(new?View.OnClickListener()?{??
????????????????@Override??
????????????????public?void?onClick(View?v)?{??
????????????????????a.setBalance(a.getBalance()+1);??
????????????????????notifyDataSetChanged();??
????????????????????dao.update(a);??
????????????????}??
????????????});<pre?class="html"?name="code">???????????//向下箭头的事件触发方法??
????????????upTV.setOnClickListener(new?View.OnClickListener()?{??
????????????????@Override??
????????????????public?void?onClick(View?v)?{??
????????????????????a.setBalance(a.getBalance()-1);??
????????????????????notifyDataSetChanged();??
????????????????????dao.update(a);??
????????????????}??
????????????});
?deleteTV.setOnClickListener(new?View.OnClickListener()?{??
????????????????@Override??
????????????????public?void?onClick(View?v)?{??
????????????????????//删除数据之前首先弹出一个对话框??
????????????????????android.content.DialogInterface.OnClickListener?listener=??
????????????????????????????new?android.content.DialogInterface.OnClickListener(){??
????????????????????????????????public?void?onClick(DialogInterface?dialog,int?which){??
????????????????????????????????????list.remove(a);//从集合删除??
????????????????????????????????????dao.delete(a.getId());//从数据库删除??
????????????????????????????????????notifyDataSetChanged();//刷新界面??
????????????????????????????????}??
????????????????????????????};??
????????????????????//创建对话框??
?????????????????Builder?builder?=new?Builder(MainActivity.this);??
????????????????????builder.setTitle("确定要删除吗?");???????????//设置标题??
????????????????????//设置确定按钮的文本以及监听器??
????????????????????builder.setPositiveButton("确定",listener);??
????????????????????builder.setNegativeButton("取消",null);??
????????????????????builder.show();??
????????????????}??
????????????});??
????????????return?item;??
????????}??
????}??
????//Listview的item点击事件??
????private?class?MyOnItemClickListener?implements?OnItemClickListener{??
??
????????public?void?onItemClick(AdapterView<?>?parent,View?view,int?position,long?id)??
????????{??
????????????//获取点击位置上的数据??
???????????Account???a=(Account)?parent.getItemAtPosition(position);??
????????????Toast.makeText(getApplicationContext(),a.toString(),Toast.LENGTH_SHORT).show();??
????????}??
????}??
}??




不知怎么搞得复制过来都是问号,,,,
0 0