您的位置:首页 > 其它

商品展示案例

2017-04-17 18:56 447 查看

知识点:ListView和SQLite数据库

文件目录,如图:



3.主布局文件(activity_main.xml),如图:



代码:

<?xml version =“1.0”encoding =“utf-8”?>
<LinearLayout xmlns:android =“http://schemas.android.com/apk/res/android”
xmlns:tools =“http:// schemas .android.com /工具”
机器人:ID = “@ + ID / activity_main”
机器人:layout_width = “match_parent”
机器人:layout_height = “match_parent”
机器人:方向= “垂直”
机器人:layout_margin = “8DP”
工具:上下文= “com.example.bzu.product.MainActivity”>
<LinearLayout
android:id =“@ + id / addLl”
android:layout_width =“match_parent”
android:layout_height =“wrap_content”
android:orientation =“horizo​​ntal”>
<EditText
android :id =“@ + id / nameEt”
android:layout_width =“0dp”
android:layout_height =“wrap_content”
android:layout_weight =“1”
android:hint =“商品名称”
android:inputType =“textPersonName”/>
<EditText
android:id =“@ + id / balanceEt”
android:layout_width =“0dp”
android:layout_height =“wrap_content”
android:layout_weight =“1”
android:hint =“金额”
android:inputType =“number”/>
<ImageView
android:onClick =“add”
android:id =“@ + id / addIv”
android:layout_width =“wrap_content”
android:layout_h 8 =“wrap_content”
android:src =“@ android:drawable / ic_input_add”
/>
</ LinearLayout>
<ListView
android:layout_width =“match_parent”
android:layout_height =“match_parent”
android:id =“@ + id / accountlv”
android:layout_below =“@ + id / addLl”> </ ListView>
</ LinearLayout>
4.创建ListView的项目布局,如图:



代码:

<?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 =“wrap_content”
android:orientation =“horizo​​ntal”
android:padding =“10dp”>

<TextView
android:id =“@ + id / idTv”
android:layout_width =“0dp”
android:layout_height =“wrap_content”
android:layout_weight = “1”
android:text =“0”
android:textSize =“20sp”
android:textColor =“#000000”
/>
<TextView
android:id =“@ + id / nameTv”
android:layout_width =“0dp”
android:layout_height =“wrap_content”
android:layout_weight =“2”
android:text =“毛巾”
android:singleLine =“true”
android:textColor =“#000000”
android:textSize =“20sp”/>
<TextView
android:id = + id / balanceTv“
android:layout_width =”0dp“
android:layout_height =”wrap_content“
android:layout_weight =”2“
android:singleLine =”true“
android:textColor =”#000000“
android:text =”12345“
android: textSize =“20sp”/>
<LinearLayout
android:layout_width =“wrap_content”
android:layout_height =“wrap_content”
android:orientation = “垂直”>
<ImageView的
机器人:ID = “@ + ID / upIv”
机器人:layout_width = “WRAP_CONTENT”
机器人:layout_height = “WRAP_CONTENT”
机器人:SRC = “@机器人:可拉伸/ arrow_up_float”/>
<ImageView的
机器人:ID =“@ + id / downIv”
android:layout_width =“wrap_content”
android:layout_height =“wrap_content”
android:src =“@ android:drawable / arrow_down_float”/>
</ LinearLayout>
<ImageView
android:id =“@ / deleteIv“
android:layout_width =”25dp“
android:layout_height =”25dp“
android:src =”@ android:drawable / ic_menu_delete“/>
</ LinearLayout>
5.定义一个MyHelper类继承自SQLiteOpenHelper,代码:
package com.example.bzu.product.dao;

导入android.content.Context;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteOpenHelper;

/ **
*由管理员于2017/4/17创建。
* /

public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context){
super(context,“dpl.db”,null,1);
}

@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(“create table account(_id integer primary key autoincrement,name varchar(20),balance integer)”);
}

@Override
public void onUpgrade(SQLiteDatabase db,int i,int i1){

}
}
6.创建账号类(javaBean),代码:
package com.example.bzu.product.bean;

/ **
*由管理员于2017/4/17创建。
* /

public class Account {
private Long id;
私有字符串名称
私有整数余额

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 Integer getBalance(){
return balance;
}

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

public Account(String name,Integer balance){
super();
this.name = name;
这个平衡=平衡;
}

public Account(Long id,String name,Integer balance){
super();
this.id = id;
this.name = name;
这个平衡=平衡;
}
public Account(){
super();
}
@Override
public String toString(){
return“[序号:”+ id +“,商品名称”+ name +
“,余额”+ balance +“]”;
}
}
创建数据库操作逻辑类AccountDao,代码:
package com.example.bzu.product.dao;

导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;

import com.example.bzu.product.bean.Account;

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

/ **
*由管理员于2017/4/17创建。
* /

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();
回报数
}
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();
回报数
}
public List <Account> queryAll(){
SQLiteDatabase db = helper.getReadableDatabase();
游标cursor = db.query(“account”,null,null,null,null,null,“balance DESC”);
List <Account> list = new ArrayList <Account>();
while(cursor.moveToNext()){
long id = cursor.getLong(cursor.getColumnIndex(“_ id”));
String name = cursor.getString(1);
int balance = cursor.getInt(2);
list.add(new Account(id,name,balance));
}
cursor.close();
db.close();
退货单
}
}
8.编写界面交互代码(MainActivity),代码:
package com.example.bzu.product;

导入android.content.DialogInterface;
导入android.support.v7.app.AlertDialog;
导入android.support
a8c1
.v7.app.AppCompatActivity;
导入android.os.Bundle;
导入android.view.View;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;

import com.example.bzu.product.bean.Account;
import com.example.bzu.product.dao.AccountDao;

import java.util.List;

public class MainActivity extends AppCompatActivity {
private List <Account> list;
私人账号
私人EditText nameEt;
私人EditText balanceEt;
私人MyAdapter适配器
私人ListView帐户
@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);
}
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());
}
public void add(View view){
String name = nameEt.getText()。toString()。
String balance = balanceEt.getText()。toString()。trim();
Account account = new Account(name,balance.equals(“”)?0:Integer.parseInt(balance));
dao.insert(account);
list.add(account);
adapter.notifyDataSetChanged();
accountLv.setSelection(accountLv.getCount() -  1);
nameEt.setText(“”)
balanceEt.setText(“”);
}
private class MyAdapter extends BaseAdapter {

@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(int position,View convertView,ViewGroup parent){
View item = convertView!= null?convertView:View.inflate(getApplicationContext(),R.layout.item,null);
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 = list.get(position);
idTv.setText(account.getId()+“”);
nameTv.setText(account.getName());
balanceTv.setText(account.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){
account.setBalance(account.getBalance()+ 1);
notifyDataSetChanged();
dao.update(account);
}
})
downTv.setOnClickListener(new View.OnClickListener(){@
Override
public void onClick(View v){
account.setBalance(account.getBalance() -  1);
notifyDataSetChanged();
dao.update(account);
}
})
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(account);
dao.delete(account.getId());
notifyDataSetChanged();
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(“确定要删除吗?“);
builder.setPositiveButton(”确定“,listener);
builder.setNegativeButton(”取消“,null);
builder.show();
}
});
归还物品;
}
}
private class MyOnItemClickListener implements AdapterView.OnItemClickListener {

@Override
public void onItemClick(AdapterView <?> parent,View view,int position,long id){
Account account =(Account)parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(),account.toString(),Toast.LENGTH_SHORT).show();
}

}
}
运行效果图:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: