【已解决】 学习领券联盟时使用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(),看看父容器是否正常
<androidx.viewpager2.widget.ViewPager2 android:id="@+id/looper_pager" android:layout_width="0dp" android:layout_height="125dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />父容器应该没啥问题呀。
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
是不是这个问题,?你设置一个固定大小看看