2017-09-15 12 views
0

だからこれは私がRecyclerviewは

をフェッチする必要がない私はダミーデータを使用する第三の断片上の最初のフラグメント

class GetDatas extends AsyncTask<Void, Void, Void> 
{ 

    Collection<ProfileDataModel> enums = Collections.EMPTY_LIST; 
    @Override 
    protected Void doInBackground(Void... voids) { 
     try{ 
      client = new OkHttpClient(); 
      String response = OkHttpService.GET(client, webUrl); 
      Gson gson = new Gson(); 
      Type type = new TypeToken<Collection<ProfileDataModel>>(){}.getType(); 
      enums = gson.fromJson(response, type); 
      profileDataModels = enums.toArray(new ProfileDataModel[enums.size()]); 
      listAdapter = new ListAdapter(Arrays.asList(profileDataModels), getContext()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 

     profileDataModels = enums.toArray(new ProfileDataModel[enums.size()]); 
     listAdapter = new ListAdapter(Arrays.asList(profileDataModels), getContext()); 
     recyclerView.setAdapter(listAdapter); 
     recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3)); 
    } 
} 

にonCreateViewで実行AsyncTaskある自体を再描画します

public class MainFragment extends Fragment { 
RecyclerView recyclerView; 
LinearLayout linearLayout; 


@Override 
public View onCreateView(
     LayoutInflater inflater, 
     ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_video_list_pages, container, false); 

    recyclerView = (RecyclerView) rootView.findViewById(R.id.video_list_recycler_view); 
    recyclerView.setHasFixedSize(true); 

    linearLayout = (LinearLayout) rootView.findViewById(R.id.video_list_adapter_rootframe); 

    ListAdapter adapter = new ListAdapter(
      new String[] { 
        "mm","aa","sss","mm","aa","sss","mm","aa","sss","mm","aa","sss","mm","aa","sss" 

      } 
    ); 
    recyclerView.setAdapter(adapter); 

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); 
    recyclerView.setLayoutManager(linearLayoutManager); 


    return rootView; 
} 

}

多分命名に混乱あなたのいくつかが、私はそのように維持したい、 My Directory names

問題は、最初のフラグメントから3番目のフラグメントにスワイプすると、リサイクルビュー自体が再描画されるということです。これは、私が2番目のフラグメントに行くときに起こることはありません。これは、テキストビューだけを含んでいます。 なぜこのようなことが起こるのか説明できますか?あなたはあなたがあなたのActivityクラスでそれを使用し、destroyItemをオーバーライドして、空白を維持する必要があり、この機能を停止する第三フラグメントに行くときに起こっていただきました!OK

+0

をクラッシュする可能性があります実装しようとしないでください? –

答えて

0

はが破壊されている断片である

@Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

    } 

あなたの問題は解決され、次回は質問の投稿前にクラスのすべてのメソッドを実行しようとします。
タブに4つの断片があり、残りの2つを残し、メモリを節約するために残りの部分を破壊すると、3つのタブがある場合は2番目のような次のタブと前のタブがある場合は3を維持することができます。空アイテムを破棄するdestroyItem!

は、あなたが10-20のタブをスクロールした場合、アプリケーションが第2のフラグメントが何をしているか

+0

ありがとうございました –

+0

今後の参考に問題を解決した場合は、回答を選択してください。 – phpdroid

関連する問題