Android中历史浏览功能的实现
2015-10-26 03:23
651 查看
在许多购物的app上,可以看到当我们浏览了某一项商品的时候,app的某一页面会将我们浏览过的商品展示出来,现用代码展示如何实现此功能:
思路分析:
1.设计好数据库:用于将浏览的商品信息保存下来,其中的字段可以是id,json数据,和time(time的作用是为了避免重复添加已经浏览过的商品)
2.当点击到某一项商品的时候,访问数据库是否有该商品的信息,有的话更新商品浏览的时间,更新数据库。没有的话添加到数据库中
3.单独开辟一个页面,按照时间顺序查询数据局,遍历数据库中的所有数据,并将数据用view展示出来:
以下代码只是为了实现功能,所以没有对UI界面进行优化。
另外,此项目是针对平板电脑,效果如如下:
数据库代码:用到jar包:greendao-generator-1.3.1.jar
以上代码都是由greendao 生成的:
商品详情页面中,当点击某一页面的时候,代码如下:
最后是将数据库中的商品展示出来:
思路分析:
1.设计好数据库:用于将浏览的商品信息保存下来,其中的字段可以是id,json数据,和time(time的作用是为了避免重复添加已经浏览过的商品)
2.当点击到某一项商品的时候,访问数据库是否有该商品的信息,有的话更新商品浏览的时间,更新数据库。没有的话添加到数据库中
3.单独开辟一个页面,按照时间顺序查询数据局,遍历数据库中的所有数据,并将数据用view展示出来:
以下代码只是为了实现功能,所以没有对UI界面进行优化。
另外,此项目是针对平板电脑,效果如如下:
数据库代码:用到jar包:greendao-generator-1.3.1.jar
以上代码都是由greendao 生成的:
商品详情页面中,当点击某一页面的时候,代码如下:
//当点击某一商品的时候,开始将商品信息保存下来: MainFragmentActivity activity = (MainFragmentActivity) getActivity(); ShoppingApplication application = (ShoppingApplication) activity.getApplication(); DaoSession daoSession = application.getDaoSession(); GoodsHistoryDao goodsHistoryDao = daoSession.getGoodsHistoryDao(); //将信息封装到javabean中: Gson gson = new Gson(); GoodsHistory loadBean = goodsHistoryDao.load(Long.parseLong(goodsItem.id)); if(loadBean!=null){ //表明数据库中已经有记录存在:更新数据库 loadBean.setTime(System.currentTimeMillis()); goodsHistoryDao.update(loadBean); }else{ //没有记录的情况 //javabean 对象 GoodsHistory goodsHistoryBean = new GoodsHistory(); goodsHistoryBean.setId(Long.parseLong(goodsItem.id)); goodsHistoryBean.setJson(gson.toJson(goodsItem)); goodsHistoryBean.setTime(System.currentTimeMillis()); goodsHistoryDao.insert(goodsHistoryBean); }
最后是将数据库中的商品展示出来:
public class HistoryFragment extends Fragment { private ListView historyListView; private List<GoodsItem> loadAllList = new ArrayList<GoodsItem>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = View .inflate(getActivity(), R.layout.fragment_history, null); // 查找listview historyListView = (ListView) view.findViewById(R.id.lv_history); // 从数据库中查询数据: String sql = "select JSON from GOODS_HISTORY order by TIME Desc"; MainFragmentActivity activity = (MainFragmentActivity) getActivity(); ShoppingApplication application = (ShoppingApplication) activity .getApplication(); GoodsHistoryDao goodsHistoryDao = application.getDaoSession() .getGoodsHistoryDao(); SQLiteDatabase db = goodsHistoryDao.getDatabase(); Cursor cursor = db.rawQuery(sql, new String[] {}); loadAllList.clear(); while (cursor.moveToNext()) { // 只查询一个字段 String json = cursor.getString(cursor.getColumnIndex("JSON")); Gson gson = new Gson(); GoodsItem goodsItem = gson.fromJson(json, GoodsItem.class); loadAllList.add(goodsItem); } cursor.close(); // 为historyListView 设置适配器: MyHistoryAdapter adapter = new MyHistoryAdapter(loadAllList); historyListView.setAdapter(adapter); return view; } private class MyHistoryAdapter extends HMAdpater<GoodsItem> { private ImageView iconImageView; private TextView titleTextView; private TextView remarkTextView; private TextView priceTextView; public MyHistoryAdapter(List<GoodsItem> list) { super(list); } @Override public View getView(int position, View convertView, ViewGroup parent) { // 初始化Item的布局: View view = null; if (convertView == null) { view = View.inflate(getActivity(), R.layout.item_history, null); iconImageView = (ImageView) view .findViewById(R.id.iv_icon_history); titleTextView = (TextView) view .findViewById(R.id.tv_name_history); remarkTextView = (TextView) view .findViewById(R.id.tv_remark_history); priceTextView = (TextView) view .findViewById(R.id.tv_price_history); } else { view = convertView; } // 设置数据: titleTextView.setText(loadAllList.get(position).title); remarkTextView.setText(loadAllList.get(position).evaluate + "条"); priceTextView.setText(loadAllList.get(position).price + "元"); String iconUrl = loadAllList.get(position).imgURL ; Log.i("hxy", iconUrl); BitmapUtils bitmapUtils = new BitmapUtils(getActivity()); bitmapUtils.display(iconImageView, iconUrl); return view; } } }
相关文章推荐
- Android中对Activity的一些封装
- Android Studio,TextView运行时显示中文乱码
- android:windowSoftInputMode
- [转]android手机连接mac调试
- android studio 快捷键
- Android 使用 intent 实现简单登陆页面
- Android核心分析
- android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
- 安装android studio 不能启动
- 解决android sdk 国内无法更新
- Android Intent Action 大全
- 求解答: at android.app.LoadedApk.initializeJavaConte
- Android之Intent分析
- android中如何设置点击button页面跳转
- Android学习——定时执行,线程,线程池
- Android中获取地理位置经纬度
- Android学习——服务Service与广播接收者BroadcastReciver
- Android中获取CPU序列号
- Android Volley完全解析(一),初识Volley的基本用法
- Android 获取AndroidManifest.xml 中 meta-data 的值