我有一个ViewPager
作为RecyclerView
的行。它就像一个“特色产品”排。
我在ViewPager
的{{1}}中设置onBindViewHolder
的适配器。 RecyclerView
包含ViewPager
和TextView
。 ImageView
是通过ImageView
中的Glide从网址加载的。 ViewPager中的项目列表为4。
问题是,instantiateItem
中前两项的ImageViews未加载。如果我将ViewPager
滑动到第3个项目并返回,我会成功看到第一个ImageView。
TextViews工作正常。问题只出在图像上。
如果我调试代码,我会发现属于Glide的代码块已到达。
如果我在片段中使用ViewPager
作为独立视图(而不是ViewPager
的一行),我发现没有问题。
有一个类似的问题: Image not loading in first page of ViewPager (PagerAdapter) 但不幸的是,这不适用于我的情况。我在本地声明我的变量,并且已经使用final修饰符。
PagerAdapter的instantiateItem如下所示:
RecyclerView
RecyclerView的onBindViewHolder如下所示:
@Override
public Object instantiateItem(ViewGroup container, int position) {
final LayoutInflater inflater = (LayoutInflater) container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View v = inflater.inflate(viewpager_layout, container, false);
final ImageView imgProduct = (ImageView) v.findViewById(R.id.imgProduct);
final TextView lblName = (TextView) v.findViewById(R.id.lblName);
final Product product = data.get(position);
lblName.setText(product.name);
Glide
.with(ctx)
.load(product.url)
.asBitmap()
.thumbnail((float) 0.4)
.placeholder(R.drawable.placeholder)
.error(R.drawable.placeholder)
.animate(R.animator.fade_in)
.into(imgProduct);
}
我顺便使用AppCompat库。 欢迎所有建议。谢谢。
答案 0 :(得分:0)
Glide异步设置图像,有助于避免UI线程中出现任何延迟。如果有许多图像,图像确实需要一些时间来设置,但它不会造成任何延迟。
答案 1 :(得分:0)
这是一个简单的异步请求问题,当您滑动到第三个标签并返回时,直到数据来来然后它与UI绑定。
我在项目中遇到过类似的问题。
我假设您正在为每个视图寻呼机使用新片段
你可以做的一件事是......
1.While creating fragment in viewPager in **getItem()**, set a tag with fragment.
2. create a viewPager **addOnPageChangeListener** and on page selected, get that fragment by tag and check if image is loaded or not.
3. If not loaded, then show some loader, and wait for the response, after response hide the loader