문제

방금 내가 본 모든 예가 다음을 사용한다는 것을 알았습니다. ListFragment 그리고 전화

adapter = new Adapter(context);
setListAdapter(adapter);
getLoaderManager().initLoader(0, null, this);

정확히 그 순서대로요.

내가 사용할 때 Fragment, 그리고 이렇게 하세요

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    adapter = new Adapter(mContext);
    getLoaderManager().initLoader(0, null, this);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    listView = (ListView) view.findViewById(R.id.listview);

    listView.setAdapter(adapter);
    return view;
}

작동하지 않습니다.내부를 추적해 보니 onLoadFinished(Loader<Cursor> loader, Cursor cursor) 그리고 알아차린 것은 adapter 그것을 모른다 ListView, 그래서 swapCursor(newCursor) 효과가 없습니다.

하지만 이렇게 하면 작동합니다.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    listView = (ListView) view.findViewById(R.id.listview);
    adapter = new Adapter(mContext);
    listView.setAdapter(adapter);
    getLoaderManager().initLoader(0, null, this);
    return view;
}

문제를 알고 있는 것 같지만 확인하려면 설명이 필요합니다.감사해요.

도움이 되었습니까?

해결책

adapter.swapCursor() 어댑터가 초기화된 후 어댑터를 ListView로 설정하지 않았기 때문에 아무런 효과가 없습니다.

onCreateView() 전에 호출됩니다 onActivityCreated().내부 ListView에 어댑터를 설정하는 경우 onCreateView() 아마도 null일 것입니다.그런 다음 onActivityCreated() 어댑터를 초기화했지만 목록 보기와 관련이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top