Java 我已经创建了RecyclerView,当屏幕方向改变时,重复的项目就会添加到顶部
我在片段中初始化了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
@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