在Android自定义适配器中调用OpenHelperManager.releaseHelper()的最合适位置在哪里

时间:2014-07-13 02:07:23

标签: android ormlite

在自定义适配器中调用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;
    }
}

1 个答案:

答案 0 :(得分:3)

好吧,作为OpenHelperManager的原作者,我强烈建议你不要使用它。永远。您不需要引用计数,也不需要关闭数据库。直接使用OrmLiteSqliteOpenHelper。

我的博客文章,在那里我解释了我是如何写这个东西的,以及为什么你不需要它。

http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection