您的位置:首页 > 移动开发 > Android开发

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 生成的:

商品详情页面中,当点击某一页面的时候,代码如下:

//当点击某一商品的时候,开始将商品信息保存下来:
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;
}

}

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