setListAdapter(adapter) 후에 getLoaderManager().initLoader(0, null, this)를 호출해야 합니까?
-
21-12-2019 - |
문제
방금 내가 본 모든 예가 다음을 사용한다는 것을 알았습니다. 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()
어댑터를 초기화했지만 목록 보기와 관련이 없습니다.
제휴하지 않습니다 StackOverflow