Java 私有静态类和游标装入器

Java 私有静态类和游标装入器,java,android,Java,Android,下面这本书是从《投标书呆子牧场》(The Bid nerd ranch)一书中复制的,我的问题是关于如下所示的私有静态类,我可以将私有静态类RunCursorAdapter更改为公共类RunCursorAdapter并将其移动到另一个文件吗?当加载器重新运行时,加载器是否会因任何原因重新加载而导致内存问题 public class RunListFragment extends ListFragment implements LoaderCallbacks<Cursor> { @

下面这本书是从《投标书呆子牧场》(The Bid nerd ranch)一书中复制的,我的问题是关于如下所示的
私有静态类
,我可以将
私有静态类RunCursorAdapter
更改为
公共类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);

    }

}
公共类RunListFragment扩展ListFragment实现LoaderCallbacks{
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
返回新的RunListCursorLoader(getActivity());
}
@凌驾
public void onLoadFinished(加载器,光标){
RunCursorAdapter适配器=
新的RunCursorAdapter(getActivity(),(RunCursor)游标);
setListAdapter(适配器);
}
@凌驾
公共void onLoaderReset(加载器){
setListAdapter(空);
}
私有静态类RunCursorAdapter扩展了CursorAdapter{
专用运行游标控制器;
公共RunCursorAdapter(上下文上下文,RunCursor){
超级(上下文,游标,0);
mRunCursor=光标;
}
公共视图newView(上下文上下文、光标、视图组父对象){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
返回充气器。充气(android.R.layout.simple\u list\u item\u 1,父项,false);
}
公共void bindView(视图、上下文上下文、光标){
Run=mRunCursor.getRun();
TextView startDateTextView=(TextView)视图;
String cellText=context.getString(R.String.cell_text,run.getStartDate());
startDateTextView.setText(cellText);
}
}

}

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


代码将以同样的方式工作,您只需将类移到外部。如果类不是静态的,则会有所不同,但在本例中是相同的。

您可以将类移动到顶级类,尽管它不需要是“公共”的,但通过将其可见性提升到“私有”之上,您将承担永远不更改面向公共的协议的责任。通常情况下,您应该厌恶提升成员的访问权限。其他类型可以访问的文件越多,维护起来就越困难。

因此,如果我理解正确,我可以将其移动到另一个具有公共静态的文件中,对吗?@amarKumar您可以移动它,对。它将是公共的,但不再是静态的,因为如果没有外部的,静态就没有意义class@amarKumar如果您认为我们回答了您的问题,请接受您认为正确的答案。