0
我有一些问题,当我重装recyclerView(读取数据)都与新的数据同步,而不是图片是内部ViewPagerRecyclerView不同步的新加载的图像
onBindViewHolder:
@Override
public void onBindViewHolderImpl(final RecyclerView.ViewHolder viewHolder, ParallaxRecyclerAdapter<Information> adapter, final int i) {
final Information current = finalContent.get(i);
((ViewHolder) viewHolder).DESCRIPTION.setText(current.description);
((ViewHolder) viewHolder).IMAGEEXISTENCE.setText(current.imageExistence.toString());
Log.d("TAG1","IMAGEEXISTENCE : "+((ViewHolder) viewHolder).IMAGEEXISTENCE.getText() +" position : "+i+" link : "+current.FileUrl);
//checking if image exists if yes then set the pager size else set it to 0
if (((ViewHolder) viewHolder).IMAGEEXISTENCE.getText().toString().matches("true")) {
//its a string of url's combined with "|"
String[] imgUrlArray = ((current.FileUrl.split("\\| ")));
arrayLists.add(imgUrlArray);
ViewPager mViewPager = ((ViewHolder) viewHolder).viewPager;
mViewPager.getLayoutParams().height = 550;
mViewPager.requestLayout();
String[] mResources = {};
// here am passing the image url to AdapterClass
mResources = arrayLists.get(i);
CarouselAdapter mCustomPagerAdapter = new CarouselAdapter(getContext(), mResources , i);
// here am setting the pagerAdapter for my Pager
mViewPager.setAdapter(mCustomPagerAdapter);
} else {
if image is not exist then am passing a blank url
String[] imgUrlArray = new String[0];
arrayLists.add(imgUrlArray);
}
}
适配器类别
public class CarouselAdapter extends PagerAdapter {
private Context mContext;
private LayoutInflater mLayoutInflater;
private String[] mResources;
private int mindex;
public CarouselAdapter(Context context, String[] resources, int index) {
mContext = context;
mResources = resources;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mindex = index;
}
@Override
public int getCount() {
return mResources.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.carousel_imgview, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
// imageView.setImageResource(mResources[position]
//);
if (mResources[position] == null){
imageView.setImageDrawable(null);
// imageView.getLayoutParams().height = 0;
// imageView.requestLayout();
}else {
final DonutProgress donutProgress = (DonutProgress) itemView.findViewById(R.id.donut_progress);
donutProgress.setTextColor(Color.argb(0,0,0,0));
donutProgress.setUnfinishedStrokeColor(Color.LTGRAY);
donutProgress.setFinishedStrokeColor(Color.GRAY);
donutProgress.setVisibility(View.VISIBLE);
ImageLoader imageLoader = ImageLoader.getInstance();
String newUrl = mResources[position].replaceAll(" ", "");
// for clearing cache
DiskCacheUtils.removeFromCache(newUrl, ImageLoader.getInstance().getDiskCache());
DisplayImageOptions options = new DisplayImageOptions.Builder().cacheOnDisk(true).build();
imageLoader.displayImage(newUrl, imageView , options , new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
donutProgress.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
donutProgress.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
donutProgress.setVisibility(View.GONE);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
Log.d("TAG","onLoadingCancelled");
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
donutProgress.setMax(total);
donutProgress.setProgress(current);
}
});
}
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((RelativeLayout) object);
}
}
即时签通过打印网址和图像存在(布尔)这是完全正确的只是不知道为什么我的recyclerView不同步新的图像
而不是图像索引正在改变(在重新加载数据image2在索引2 )重新加载数据后(如果数据是新的),然后所有我的图像的索引得到改变,如果重新加载image2之后在索引2重新加载后,image2移动到索引1它与所有图像我没有任何线索发生这是为什么如果发生有人知道那么请你指导我如何解决这一问题
是不是会造成问题?因为意见不可回收,所以意味着更多的工作效率降低。纠正我,如果我错了 –
甚至尝试你的解决方案没有做任何改变 –
它效率较低,但由于有如果在bindViewHolder(),如果还有其他,我认为这可能是导致问题。我想这是在你正在更新“信息”类的数据的类中。你怎么更新数据并调用'notifyDataSetChanged()'? –