【发布时间】:2020-10-18 07:28:00
【问题描述】:
我正在使用 viewpager2 创建一个图像和视频滑块。我为此使用了recyclerviewadapter。我的代码如下。文件中的位图正确加载到 imageview。我的列表有 14 个项目(图像和视频)。但 linearlayout.addview 只显示重复的图像。显示 5 张图像后,它从 1 开始。为什么这些图像重复..请帮助..我的 recylerview 适配器类如下..这有什么问题
public SlideViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_slidescreen, parent, false);
return new SlideViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull SlideViewHolder holder, int position) {
Log.d("CHKck", position + " " + getItemCount());
StatusModel statusModel = itemList.get(position);
File file = statusModel.getFile();
Log.d("CHKfileadapt", String.valueOf(file) + " " + position);
if (file.exists()) {
if (statusModel.isVideo) {
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
linearLayout.setGravity(Gravity.FILL);
linearLayout.setOrientation(LinearLayout.VERTICAL);
VideoView videoView = new VideoView(context);
videoView.setVideoPath(file.getAbsolutePath());
videoView.setMediaController(new MediaController(context));
holder.linearLayout.addView(videoView);
} else {
Log.d("CHK", "image");
holder.linearLayout.setOrientation(LinearLayout.VERTICAL);
holder.linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
ImageView imageView = new ImageView(context);
Bitmap bitmap = BitmapFactory.decodeFile(statusModel.getPath());
imageView.setImageBitmap(bitmap);
imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
holder.linearLayout.addView(imageView);
}
}
}
@Override
public int getItemCount() {
return itemList.size();
}
public class SlideViewHolder extends RecyclerView.ViewHolder {
private LinearLayout linearLayout;
private List<Integer> poslist = new ArrayList<>();
private int i = 0;
public SlideViewHolder(@NonNull View itemView) {
super(itemView);
linearLayout = itemView.findViewById(R.id.llout_slidescreenId);
}
}
【问题讨论】:
-
谢谢AF先生..我从这里得到了答案...非常感谢..
标签: android android-recyclerview android-viewpager2