0
我有一個擴展ListFragment並實現LoaderManager.LoaderCallbacks的片段。在這個片段中,我有一個應該調用web服務並填充列表的按鈕。onCreateLoader()只調用一次
的問題是這種方法只被調用一次,僅在創建的片段,它會我叫每當我按下按鈕時:
@Override
public Loader<List<ResultSearchUser>> onCreateLoader(int arg0, Bundle arg1) {
return new SearchUsersTask(getActivity(), page, size);
}
這裏是我的按鈕:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
Button buttonSearchUsers = (Button) mLinearLayout
.findViewById(R.id.buttonSearchUsers);
buttonSearchUsers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (user.getInterests() != null
&& user.getInterests().size() > 0) {
page++;
getLoaderManager().initLoader(0, null, SearchFragment.this);
}
}
});
....
爲什麼僅在創建片段時調用onCreatedLoader()?爲什麼onLoadFinished()方法每次按下按鈕都會調用?使用onLoadFinished()方法調用我的任務並填充列表的正確方法是什麼?
提前致謝。
明白了。那麼最佳做法是什麼?切換我的按鈕來調用我的任務,並使用回調來填充ListFragment?把「getLoaderManager()。restartLoader(0,null,SearchFragment.this);」 on button.setOnClickListener()聽起來像一個(壞)工作。 – placplacboom
如果您只想重新執行'Loader'加載任務,則可以調用'Loader#forceLoad()'。 –