2016-04-14 5 views
0

hinzugefügt Ich habe RecyclerView im Fragment wie folgt initialisiert.Ich habe RecyclerView erstellt und wenn sich die Bildschirmausrichtung ändert, dann werden doppelte Elemente zum oberen

@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); 
    } 

Dann habe ich einen RecyclerView-Adapter wie folgt erstellt.

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); 
     } 
    } 
} 

nun das Problem, das ich konfrontiert ist, wenn ich in dem Hochformat auf Querformat nehme Bildschirm werden die Elemente Duplikat bei top.I sind nicht die Ursache herauszufinden. Hier

ist die Verbindung des Bildschirms Schuss https://drive.google.com/file/d/0B2oBJsY3oyCtUTZsS1RmdC1RclU/view?usp=sharing

+0

hinzufügen versuchen ** android: configChanges = "Orientierung | Screen" ** auf Ihrer Aktivität manifestieren – itsa04g9

+0

warum Artikel 50 zählen zurückkehren get –

Antwort

1

ja ich habe die Zeile von @ itsa04g9 hinzugefügt und jetzt funktioniert es gut.

android:configChanges="orientation|screenSize" 
0

Es scheint, dass Sie nicht haben keine List Werte, nur statische Werte anzuzeigen. Setzen Sie RecyclerView Code in von wo Sie initialisiert haben.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    // Your RecyclerView logic 
} 
Verwandte Themen