2016-04-14 8 views
0

次のように、RecyclerViewをフラグメントで初期化しました。私はRecyclerViewを作成しました。画面の向きが変わると、重複した項目が最上部に追加されます。

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view= inflater.inflate(R.layout.fragment_home_page, container, false); 
     initialiseView(view); 
     recyclerView.setHasFixedSize(true); 
     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); 
     linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     recyclerView.setLayoutManager(linearLayoutManager); 
     recyclerView.setAdapter(new HomepageRecyclerViewAdapter(getActivity())); 
     return view; 
    } 
    private void initialiseView(View view){ 
     recyclerView=(RecyclerView)view.findViewById(R.id.recyclerView); 
    } 

次に、次のようにRecyclerViewアダプタを作成しました。私は原因を把握することはできませんtop.Iでアイテムが重複しているされてランドスケープモードにポートレートモードに画面を撮るとき

public class HomepageRecyclerViewAdapter extends RecyclerView.Adapter<HomepageRecyclerViewAdapter.ViewHolders> { 
    private Context context; 

    public HomepageRecyclerViewAdapter(Context context) { 
     this.context = context; 
    } 

    @Override 
    public HomepageRecyclerViewAdapter.ViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater. 
       from(parent.getContext()). 
       inflate(R.layout.homepage_recycler_view_content, parent, false); 
     return new ViewHolders(itemView); 
    } 

    @Override 
    public void onBindViewHolder(final HomepageRecyclerViewAdapter.ViewHolders holder, int position) { 
     prepareHorizontalScrollView(holder.videoOuterParent); 
    } 

    @Override 
    public int getItemCount() { 
     return 50; 
    } 

    static class ViewHolders extends RecyclerView.ViewHolder { 
     protected LinearLayout parentContent; 
     protected ImageView videoImage; 
     protected RelativeLayout videoInnerParent; 
     protected HorizontalScrollView horizontalScrollView; 
     protected LinearLayout videoOuterParent; 

     public ViewHolders(View view) { 
      super(view); 
      parentContent = (LinearLayout) view.findViewById(R.id.parent_content); 
      videoImage = (ImageView) view.findViewById(R.id.video_image); 
      videoInnerParent = (RelativeLayout) view.findViewById(R.id.video_inner_parent); 
      videoOuterParent = (LinearLayout) view.findViewById(R.id.video_outer_parent); 
      horizontalScrollView = (HorizontalScrollView) view.findViewById(R.id.horizontal_scroll_view); 
      videoInnerParent.getViewTreeObserver() 
        .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
         @Override 
         public void onGlobalLayout() { 

         } 
        }); 
     } 
    } 

    private void prepareHorizontalScrollView(LinearLayout videoOuterParent) { 
     videoOuterParent.removeAllViews(); 
     for (int i = 0; i < 10; i++) { 
      RelativeLayout relativeLayout = new RelativeLayout(context); 
      relativeLayout.setLayoutParams(new ViewGroup.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT)); 
      final ImageView imageView = new ImageView(context); 
      imageView.setAdjustViewBounds(true); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setImageResource(R.drawable.gire_khursani); 
      RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT); 
      layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); 
      layoutParams.setMargins(10, 10,0, 10); 
      imageView.setLayoutParams(layoutParams); 
      relativeLayout.addView(imageView); 
      videoOuterParent.addView(relativeLayout); 
     } 
    } 
} 

は、今私が直面している問題があります。ここで

は、画面のリンクはそれを表示するだけの静的な値、あなたがどんなList値を持っていないようだ https://drive.google.com/file/d/0B2oBJsY3oyCtUTZsS1RmdC1RclU/view?usp=sharing

+0

はアンドロイド**を追加してみてください。configChanges =「オリエンテーション|画面サイズ」 – itsa04g9

+0

が、なぜ50としてカウントGETアイテムを返却しているあなたの活動の**は、マニフェスト –

答えて

1

はい私は@ itsa04g9で与えられた行を追加しましたが、今はうまくいきます。

android:configChanges="orientation|screenSize" 
0

ショットです。 RecyclerViewコードをに入れてください。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    // Your RecyclerView logic 
} 
関連する問題