可参考Android 中对 ListView 中 进行增删改查

完成效果如图所示:

GoodActivity

package com.example.sqlitedemo;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;import com.example.sqlitedemo.adapter.MyAdapter;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;public class GoodActivity extends Activity  {Button btnAdd,btnfindall;EditText etGname;EditText etGprice;GoodDao goodDao;MyAdapter myAdapter;List<GoodBean> goodlist;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_goods);goodDao = new GoodDao(this);btnAdd = findViewById(R.id.btn_add);etGname = findViewById(R.id.et_name);etGprice = findViewById(R.id.et_price);btnfindall = findViewById(R.id.btn_findall);btnAdd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String goodname = etGname.getText().toString();String price = etGprice.getText().toString();if (!(TextUtils.isEmpty(goodname)||TextUtils.isEmpty(price))){int goodprice = Integer.valueOf(price);boolean flag = goodDao.insertGood(goodname,goodprice);if(flag){Toast.makeText(getApplicationContext(),"添加成功",Toast.LENGTH_SHORT).show();}else {Toast.makeText(getApplicationContext(),"该商品已存在!",Toast.LENGTH_SHORT).show();}}else {Toast.makeText(getApplicationContext(),"请输入相关信息",Toast.LENGTH_SHORT).show();}}});btnfindall.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.setClass(GoodActivity.this,ListViewActivity.class);startActivity(intent);}});}}

GoodDao

package com.example.sqlitedemo;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;import java.util.ArrayList;
import java.util.List;public class GoodDao {private SQLiteDatabase sqLiteDatabase;public GoodDao(Context context) {//初始化刚刚写的MySQLiteHelper对象MySQLiteHelper mySQLiteHelper = new MySQLiteHelper(context);//获取sqLiteDatabase对象sqLiteDatabase = mySQLiteHelper.getWritableDatabase();}public boolean insertGood(String goodname,int price){Cursor cursor = sqLiteDatabase.query("good",new String[]{"goodname"},"goodname=? ",new String[]{goodname},null,null,null);if (cursor.getCount() != 0){return false;}ContentValues values = new ContentValues();values.put("goodname",goodname);values.put("price",price);//第一个是表名,第二个null,第三个是相当于sql插入语句的values//id用于判断是否插入成功: 如果大于0则表示插入了至少一条数据,否则插入失败long id = sqLiteDatabase.insert("good",null,values);return id>0?true:false;}public List<GoodBean> seleteAll(){List<GoodBean> goodlist = new ArrayList<>();Cursor cursor = sqLiteDatabase.rawQuery("select * from good",null);while (cursor.moveToNext()) {GoodBean goodBean = new GoodBean();goodBean.setGoodname(cursor.getString(cursor.getColumnIndex("goodname")));goodBean.setPrice(cursor.getInt(cursor.getColumnIndex("price")));goodlist.add(goodBean);}return goodlist;}public boolean deleteGood(String goodname){long id = sqLiteDatabase.delete("good","goodname = ?",new String[]{goodname});return id>0?true:false;}public boolean updategood(String goodname,int price){boolean flag;ContentValues values = new ContentValues();values.put("price",price);long id = sqLiteDatabase.update("good",values,"goodname = ? ",new String[]{goodname});flag = id > 0?true : false;return flag;}public List<GoodBean> seleteGood(String goodname){List<GoodBean> goodlist = new ArrayList<>();Cursor cursor = sqLiteDatabase.query("good",new String[]{"goodname","price"},"goodname=? ",new String[]{goodname},null,null,null);while (cursor.moveToNext()){GoodBean goodBean = new GoodBean();//userBean.setId(cursor.getInt(cursor.getColumnIndex("id")));goodBean.setGoodname(cursor.getString(cursor.getColumnIndex("goodname")));goodBean.setPrice(cursor.getInt(cursor.getColumnIndex("price")));goodlist.add(goodBean);}return goodlist;}}

ListViewActivity

package com.example.sqlitedemo;import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import androidx.annotation.Nullable;import com.example.sqlitedemo.adapter.MyAdapter;import java.util.ArrayList;
import java.util.List;public class ListViewActivity extends Activity implements AdapterView.OnItemClickListener, MyAdapter.Callback {ListView lvGood;MyAdapter myAdapter;List<GoodBean> goodlist;GoodDao goodDao;Button btnSelect;EditText et_Sname;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_listview);goodDao = new GoodDao(this);lvGood = findViewById(R.id.lv_goods);btnSelect = findViewById(R.id.btn_select);et_Sname = findViewById(R.id.et_Sname);initView();initDate();initEvent();btnSelect.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {initView();initDate();initEvent();}});}private void initEvent() {myAdapter = new MyAdapter(goodlist,this,this);lvGood.setAdapter(myAdapter);lvGood.setOnItemClickListener(this);}private void initDate() {String Sname = et_Sname.getText().toString();goodlist = new ArrayList<>();if (TextUtils.isEmpty(Sname)){goodlist = goodDao.seleteAll();}else {goodlist = goodDao.seleteGood(Sname);if (goodlist.size() == 0){Toast.makeText(ListViewActivity.this,"该商品不存在",Toast.LENGTH_SHORT).show();goodlist = goodDao.seleteAll();}}}private void initView() {}@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {Toast.makeText(this, "listview的item被点击了!,点击的位置是-->" + i,Toast.LENGTH_SHORT).show();}@Overridepublic void click(View v) {boolean flag = goodDao.deleteGood(goodlist.get((Integer)v.getTag()).getGoodname());if(flag){Toast.makeText(ListViewActivity.this,"删除成功!",Toast.LENGTH_SHORT).show();initView();initDate();initEvent();}else {Toast.makeText(ListViewActivity.this,"删除失败!",Toast.LENGTH_SHORT).show();}}@Overridepublic void click1(View v, String content) {if (!TextUtils.isEmpty(content)){Integer content1 = Integer.valueOf(content);String name = goodlist.get((Integer) v.getTag()).getGoodname();boolean flag =  goodDao.updategood(name,content1);if(flag){Toast.makeText(ListViewActivity.this,"修改成功 !",Toast.LENGTH_SHORT).show();initView();initDate();initEvent();}else {Toast.makeText(ListViewActivity.this,"修改失败 !",Toast.LENGTH_SHORT).show();}}else {Toast.makeText(ListViewActivity.this,"请输入修改金额",Toast.LENGTH_SHORT).show();}}
}

GoodBean

package com.example.sqlitedemo;public class GoodBean {private int id;private String goodname;@Overridepublic String toString() {return "GoodBean{" +"id=" + id +", goodname='" + goodname + '\'' +", price=" + price +'}';}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getGoodname() {return goodname;}public void setGoodname(String goodname) {this.goodname = goodname;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}private int price;
}

MyAdapter

package com.example.sqlitedemo.adapter;import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.sqlitedemo.GoodBean;
import com.example.sqlitedemo.R;import java.util.List;public class MyAdapter extends BaseAdapter {private List<GoodBean> goodlist;private LayoutInflater layoutInflater;private Context context;private Callback mCallback;public MyAdapter(List<GoodBean> goodlist, Context context,Callback callback) {this.goodlist = goodlist;this.context =context;layoutInflater = LayoutInflater.from(context);mCallback = callback;}public interface Callback {void click(View v);void click1(View v,String content);}@Overridepublic int getCount() {return goodlist!=null?goodlist.size():0;}@Overridepublic Object getItem(int i) {return goodlist.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(final int i, View view, ViewGroup parent) {ViewHolder viewHolder = new ViewHolder();if (view == null){view =layoutInflater.inflate(R.layout.activity_good_item,null);TextView etDetail1 = view.findViewById(R.id.tv_detial1);TextView etDetail2 = view.findViewById(R.id.tv_detial2);Button btn1 = view.findViewById(R.id.btn_updategood);Button btn2 = view.findViewById(R.id.btn_deletegood);EditText etedit = view.findViewById(R.id.et_edit);viewHolder.etDetail1 = etDetail1;viewHolder.etDetail2 = etDetail2;viewHolder.btn1 = btn1;viewHolder.btn2 = btn2;viewHolder.etedit = etedit;view.setTag(viewHolder);}else {viewHolder = (ViewHolder) view.getTag();}final GoodBean goodBean = goodlist.get(i);viewHolder.etDetail1.setText(goodBean.getGoodname());viewHolder.etDetail2.setText(String.valueOf(goodBean.getPrice()));viewHolder.btn2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(final View view) {AlertDialog alertDialog = new AlertDialog.Builder(view.getContext()).setMessage("确定删除 "+goodlist.get(i).getGoodname()+" 吗?").setIcon(R.mipmap.ic_launcher).setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮@Overridepublic void onClick(DialogInterface dialogInterface, int i) {mCallback.click(view);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Toast.makeText(view.getContext(), "已取消删除", Toast.LENGTH_SHORT).show();}}).create();alertDialog.show();}});viewHolder.btn2.setTag(i);final ViewHolder finalViewHolder = viewHolder;viewHolder.btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(final View view) {final String content = finalViewHolder.etedit.getText().toString();AlertDialog alertDialog = new AlertDialog.Builder(view.getContext()).setMessage("确定将 "+goodlist.get(i).getGoodname()+" 的价格从 "+goodlist.get(i).getPrice()+" 更改为 "+content+" 吗?").setIcon(R.mipmap.ic_launcher).setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮@Overridepublic void onClick(DialogInterface dialogInterface, int i) {mCallback.click1(view,content);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Toast.makeText(view.getContext(), "已取消修改", Toast.LENGTH_SHORT).show();}}).create();alertDialog.show();}});viewHolder.btn1.setTag(i);return view;}class ViewHolder{TextView etDetail1;TextView etDetail2;Button btn1;Button btn2;EditText etedit;}
}

activity_good_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="80dp"android:layout_marginTop="10dp"><TextViewandroid:layout_width="125dp"android:layout_height="80dp"android:text="商品名"android:textSize="36dp"android:id="@+id/tv_detial1"/><TextViewandroid:layout_width="90dp"android:layout_height="80dp"android:text=" 金额"android:textSize="36dp"android:id="@+id/tv_detial2"/><EditTextandroid:layout_width="100dp"android:layout_height="80dp"android:hint="修改的金额"android:inputType="number"android:id="@+id/et_edit"/><Buttonandroid:layout_width="80dp"android:layout_height="80dp"android:text="修改"android:textSize="23dp"android:id="@+id/btn_updategood"/><Buttonandroid:layout_width="80dp"android:layout_height="80dp"android:text="删除"android:textSize="23dp"android:id="@+id/btn_deletegood"/></LinearLayout></LinearLayout>

activity_goods.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><EditTextandroid:layout_width="180dp"android:layout_height="50dp"android:hint="商品名称"android:id="@+id/et_name"/><EditTextandroid:layout_width="180dp"android:layout_height="50dp"android:inputType="number"android:hint="金额"android:id="@+id/et_price"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="+"android:textSize="30dp"android:id="@+id/btn_add"/></LinearLayout><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="查询商品"android:textSize="30dp"android:id="@+id/btn_findall"/></LinearLayout>

activity_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><EditTextandroid:layout_width="290dp"android:layout_height="80dp"android:hint="商品名称"android:textSize="36dp"android:id="@+id/et_Sname"/><Buttonandroid:id="@+id/btn_select"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查找"android:layout_marginLeft="20dp"android:textSize="30dp" /></LinearLayout><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/lv_goods"/>
</LinearLayout>

可参考Android 中对 ListView 中 进行增删改查

Android 中 简单商品列表 的运用相关推荐

  1. python 列表推导 为什么快_Python中简单的列表推导式,却能解决复杂的问题,你学会了吗?...

    Beautiful is better than ugly. ------Python之禅 01[引子] 我们知道,Python是一门简单.易学的编程语言,"Python之禅"里面 ...

  2. Android中简单实现贴纸功能labelview

    借鉴:https://www.jianshu.com/p/4a16d831c574 虽然目前项目里没有遇到过这个功能,但是以防以后遇到后再去上网查,所以在此记录,这个还是比较简单的,直接看代码. 一. ...

  3. 电商app中的商品列表UX框架要如何设计?

    电商快消费的时代,面对琳琅满目的商品图与文案,用户怎样才能快速抓到重点?或者说,怎么样才能让信息出现在合适的位置? 初学者建议 对于刚入门的UI设计师来说只要去图库网站找一些素材,借助工具进行修饰即可 ...

  4. Android中简单的日期格式化

    自己遇到的一点格式化日期的方法,记下来 // 今天的信息 显示时间                 dateStr = DateFormat.getTimeFormat(context).format ...

  5. Android 中简单计时器的实现方法(Handler和TimerTask)

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  6. ecshop的商品列表输出中多出一条空记录

    这个是ECSHOP的一个BUG, 在模板中显示商品列表的位置,加一句{if $goods}判断商品存在才显示: {foreach from=$goods_list item=goods} {if $g ...

  7. Gradle在Android中的简单使用

    Gradle在Android中简单的使用 还望支持个人博客站:http://www.enjoytoday.cn Android Studio 使用gradle进行工程构建,为了更好的了解整个andro ...

  8. Android 中一个简单垂直跑马灯的实现

    记录一个Android中简单实现垂直跑马灯功能的方法:实现了垂直跑马灯的功能.记录一下以便日后查看: 首先在MainActivity下新建一个名为ScrollTextView的.java 文件 Scr ...

  9. java后台对查询到的商品列表按店铺分组并返回json数据

    List<ShoppingCart> cartList = shoppingService.getCartList(userId);//这是从数据库获取的购物车商品列表 Map<In ...

最新文章

  1. 谷歌等揭露「AI任务疑难」:存在局限的ImageNet等基准,就像无法代表「整个世界」的博物馆...
  2. 编写yara规则 检测恶意软件
  3. 计划策略-11-毛需求计划
  4. java中使用kotlin_在Kotlin中使用libGDX
  5. 输入框设置只能输入数字
  6. leetcode —— 206. 反转链表
  7. 探讨 | SpringBoot + MyBatis 多数据源事物问题
  8. iPad mini 6外形巨变:升级全面屏 还要砍掉Home键
  9. 利用HTML+JS+CSS实现简单的网页计算器,附html所有源代码,可直接黏贴运行
  10. ajax传递数组_利用AJAX+PHP+MySQL实现不重新加载页面进行用户名已注册检测
  11. 10.8 wtx模拟题题解
  12. 简析struct in_addr ,struct sockadd
  13. java程序员面试题大全含答案(2018--2019)
  14. 电脑垃圾,电脑垃圾怎么清理?电脑垃圾深度清理方法?
  15. python+django+mysql多用户B2C商城系统毕业设计毕设开题报告
  16. 如何画出频谱图 matlab
  17. 适合产品经理的桌面壁纸-分类神器
  18. Unity3d将资源打包成AssetBundle 读取后材质球丢失的问题
  19. TensorFlow2.0 Guide官方教程 学习笔记17 -‘Using the SavedModel format‘
  20. Python函数的应用--汇率转换函数示例(第九章)

热门文章

  1. 智慧城市概述:算法与数据链接下的未来设想
  2. net npf 服务名无效_win10系统打开wireshark提示npF驱动没有运行的处理方法
  3. Random Walks: A Review of Algorithms and Applications2020翻译
  4. Python之520爱的表白
  5. php计算股票均线,移动平均线——Moving Average 平均线的计算公式
  6. GSM蜂窝移动通信系统 --- 时间色散和均衡
  7. 计算机毕业设计ssm基于ssm流浪宠物领养系统8xg84系统+程序+源码+lw+远程部署
  8. (中篇)中高级前端大厂面试秘籍,寒冬中为您保驾护航,直通大厂
  9. MxCAD5.2 2017.2.23更新
  10. 两个集合相等的例题_集合的相等答案