私有静态类和CursorLoader

时间:2016-06-23 23:28:27

标签: java android

以下从书籍The Bid nerd ranch复制了以下内容,我的问题是private static class,如下所示,我可以将private static class RunCursorAdapter更改为public class RunCursorAdapter并将其移至另一个文件吗?当加载程序因任何原因重新运行时重新加载加载程序会导致任何内存问题吗?

public class RunListFragment extends ListFragment implements LoaderCallbacks<Cursor> {


@Override

public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    return new RunListCursorLoader(getActivity());
}


@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

    RunCursorAdapter adapter =
    new RunCursorAdapter(getActivity(), (RunCursor)cursor);
    setListAdapter(adapter);
}



@Override
public void onLoaderReset(Loader<Cursor> loader) {
    setListAdapter(null);
}


private static class RunCursorAdapter extends CursorAdapter {

    private RunCursor mRunCursor;

    public RunCursorAdapter(Context context, RunCursor cursor) {
        super(context, cursor, 0);
        mRunCursor = cursor;
    }


    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        return inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
    }


    public void bindView(View view, Context context, Cursor cursor) {

        Run run = mRunCursor.getRun();
        TextView startDateTextView = (TextView)view;
        String cellText = context.getString(R.string.cell_text, run.getStartDate());
        startDateTextView.setText(cellText);

    }

}

}

2 个答案:

答案 0 :(得分:1)

您可以将私有静态类移动到单独的文件并将其公开。不存在内存问题,因为类将位于单独的文件中,其对象不会对任何内容进行任何隐式引用。

代码将以相同的方式工作,您只需将课程移到外面。如果班级不是静态的,那会有所不同,但在这种情况下,它是相同的。

答案 1 :(得分:0)

您可以将课程升级为顶级课程,但不一定是“公开”课程,但通过将其知名度提升到“私人”以上,您承担的责任永远不会改变其面向公众的协议。通常你应该厌恶提升会员的访问权限。其他类型可以访问它,维护起来就越困难。