【已解决】 学习领券联盟时使用ViewPager2做轮播图,Adapter写的有问题?
public class LooperPagerAdapter extends RecyclerView.Adapter<LooperPagerAdapter.ViewHolder> {
private List<HomePagerContent.DataBean> mData = new ArrayList<>();
private Context mContext;
public void setData(List<HomePagerContent.DataBean> contents) {
mData.clear();
mData.addAll(contents);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = parent.getContext();
ImageView itemView = new ImageView(mContext);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
itemView.setLayoutParams(layoutParams);
ViewHolder holder = new ViewHolder(itemView);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
HomePagerContent.DataBean dataBean = mData.get(position);
String coverUrl = UrlUtils.getCoverPath(dataBean.getPict_url());
Glide.with(mContext).load(coverUrl).into((ImageView) holder.itemView);
}
@Override
public int getItemCount() {
return mData.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(@NonNull View itemView) {
super(itemView);
}
}
}
// looperPager
// 设置适配器
mLooperPagerAdapter = new LooperPagerAdapter();
looperPager.setAdapter(mLooperPagerAdapter);
// 数据列表加载
mHomePageContentAdapter.setData(contents);
setUpState(State.SUCCESS);
用的是ViewPager2 在写Adapter时没有用LayoutInflate 直接new ImageView,他不显示。
这题太难了。这里动态编写的ImageView压根就没有问题,这个Adapter也压根没有问题。其它地方错了吧。先打log看一下onCreateViewHolder和onBindViewHolder有没有执行。或者在onCreateViewHolder里执行一下parent.getLayoutParams().width/height(),看看父容器是否正常
父容器应该没啥问题呀。
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
是不是这个问题,?你设置一个固定大小看看