在自定义适配器中调用OpenHelperManager.releaseHelper();
的最合适位置。
对于其他上下文,在具有ListView
的片段中调用此适配器。
请按照下面的代码段进行操作。
public class CustomAdapter extends BaseAdapter {
private DatabaseHelper mDatabaseHelper;
private RuntimeExceptionDao<SomeObject, Long> dao;
private List<SomeObject> mList;
private Context context;
public CustomAdapter(Context context) {
this.context = context;
mDatabaseHelper = OpenHelperManager.getHelper(context, DatabaseHelper.class);
dao = mDatabaseHelper.getRuntimeExceptionDao();
mList = dao.queryForAll();
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return mList.get(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = layoutInflater.inflate(R.layout.item, parent, false);
TextView title = (TextView) row.findViewById(R.id.txtTitle);
SomeObject obj = mList.get(position);
title.setText(obj.getTitle());
return row;
}
}
答案 0 :(得分:3)
好吧,作为OpenHelperManager的原作者,我强烈建议你不要使用它。永远。您不需要引用计数,也不需要关闭数据库。直接使用OrmLiteSqliteOpenHelper。
我的博客文章,在那里我解释了我是如何写这个东西的,以及为什么你不需要它。
http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection