0

したがって、フラグメントでcommonswareのendlessadapterを使用している場合、アダプターがデータのロードの完了を待機している間に回転するたびに、cacheInBackgroundメソッドが再度呼び出されるという問題があります。アダプターの初期化はフラグメントからonActivityCreatedメソッドで呼び出されるので、cacheInBackgroundメソッドの最初の呼び出しの結果を簡単に再開するにはどうすればよいですか?

IpdmsEndlessAdapter endAdapt= new IpdmsEndlessAdapter(getActivity(),adapter,R.layout.list_loading_row){


        @Override
        protected boolean cacheInBackground() throws RequestException{
            tempList.clear();
            List<MyProcessDTO> myPRocs;

            myPRocs = new MyprocessesManager(getActivity()).getMyProcessesFromServer(processListPage);

            if(myPRocs!=null){
                tempList.addAll(myPRocs);
            }else
                return false;
            //return true if there's more data do return
            //return false if there was an error or there's no more data
            return myPRocs.size()>=10;


        }

        @Override
        protected boolean onException(View pendingView, Exception e) {

            Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();

            return false;
        }

        @Override
        protected void appendCachedData() {

            @SuppressWarnings("unchecked")
            GenericMenuAdapter a=(GenericMenuAdapter)getWrappedAdapter();

            for(MyProcessDTO myProcessDTO:tempList){
                a.add(new IpdmsMobileMenuItemListDTO(myProcessDTO.getNrprocesso(), myProcessDTO.getEtapa(), 0, myProcessDTO));
            }
            processListPage++;

        }

    };
    actualListView.setAdapter(endAdapt);

よろしく、

4

1 に答える 1

1

これを動的フラグメントにして(つまり、を介してセットアップし) 、セットアップ中にどこかでFragmentTransaction呼び出します(たとえば、 )。これにより、構成の変更間でアダプターインスタンスが保持されます。setRetainInstance(true)onActivityCreated()

バックグラウンドスレッドが作業を行っている間、構成の変更に関してまだいくつかの問題がある可能性があります。上記の推奨事項を適用しても問題が発生する場合は、この回答にコメントを投稿してください。

于 2012-06-18T19:53:42.497 に答える