Java 我已经创建了RecyclerView,当屏幕方向改变时,重复的项目就会添加到顶部

Java 我已经创建了RecyclerView,当屏幕方向改变时,重复的项目就会添加到顶部,java,android,Java,Android,我在片段中初始化了RecyclerView,如下所示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view= inflater.inflate(R.layout.fragment_home_page, container, fal

我在片段中初始化了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);
    }
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);
        }
    }
}
然后我创建了一个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);
    }
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);
        }
    }
}
现在我面临的问题是,当我将屏幕模式转换为纵向模式,再转换为横向模式时,项目在顶部重复。我无法找出原因

这是屏幕截图的链接

似乎没有任何列表值,只显示静态值。将RecyclerView代码放入已初始化的OnConfiguration中

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

似乎没有任何列表值,只显示静态值。将RecyclerView代码放入已初始化的OnConfiguration中

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

是的,我添加了@itsa04g9给出的行,现在它工作正常

android:configChanges="orientation|screenSize"

是的,我添加了@itsa04g9给出的行,现在它工作正常

android:configChanges="orientation|screenSize"

尝试在活动清单上添加android:configChanges=orientation |屏幕大小为什么将get item count返回为50尝试在活动清单上添加android:configChanges=orientation |屏幕大小为什么将get item count返回为50