我有RecycleViewer(GridLayoutManager)
其中 0,2,5,7 位置已固定Custom images (relativeLayout converted to bitmap)
我想跳过这些 0,2,5,7 职位,因为他们已经Custom images
& 我希望填补余下的职位服务器图像
在onBindViewHolder
中if (position == 0) {
ProfilePhotosViewHolder.relativeBucket.setVisibility(View.VISIBLE);
ProfilePhotosViewHolder.relativeBucket.setDrawingCacheEnabled(true);
ProfilePhotosViewHolder.relativeBucket.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
ProfilePhotosViewHolder.relativeBucket.layout(0, 0, ProfilePhotosViewHolder.relativeBucket.getMeasuredWidth(), ProfilePhotosViewHolder.relativeBucket.getMeasuredHeight());
ProfilePhotosViewHolder.relativeBucket.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(ProfilePhotosViewHolder.relativeBucket.getDrawingCache());
ProfilePhotosViewHolder.relativeBucket.setDrawingCacheEnabled(false);
ProfilePhotosViewHolder.imgProfilePhotos.setImageBitmap(b);
}
if (position == 2) {
...
}
if (position == 5) {
...
}
if (position == 7) {
...
}
if (position!=0 || position!= 2 || position!=5 || position!=7){
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
ProfilePhotosViewHolder.imgProfilePhotos.setImageUrl(model.Images, imageLoader);
ProfilePhotosViewHolder.imgProfilePhotos.setDefaultImageResId(R.drawable.im_profile_monuments);
ProfilePhotosViewHolder.imgProfilePhotos.setErrorImageResId(R.drawable.bt_profile_addphoto);
}
但服务器图片不会跳过 0,2,5,7 位置,它也会显示(技术上落后于我的自定义图像)
答案 0 :(得分:0)
您最后的if语句始终为真。
以下是您的错误陈述如何适用于位置0 :
if (position!=0 || position!= 2 || position!=5 || position!=7) {
如果位置!= 0(假)或位置!= 2(真) - 因为语句是 true 它会执行 - 你不希望它是在这种情况下为true,因为如果position为0或2或5或7,则不想执行。
你需要&&如果您希望图像加载器只发生在0 和而不是2 和而不是5 和而不是7 ...
否则如果你的条件更好的选择。
但如果使用switch语句,您的代码将更简单,更快速,更易于阅读。
switch(position) {
case 0:
...
break;
case 2:
...
break;
case 5:
...
break;
case 7:
...
break;
default:
...
break;
}
答案 1 :(得分:0)
我假设你有List
引用变量,你从服务器获取的数据填充,而不是设置为Adapter
。 (假设您从服务器获得了6个项目。)
所以你的列表中包含以下位置的元素
list[ 0= "data",1= "data",2= "data",3= "data",4= "data",5= "data",6= "data"]
问题是你的适配器填充gidview
与你提供的列表相对应,不会跳过元素,
你可以做的是,在制作List
时你可以跳过你希望适配器跳过的位置,以这种方式
list.add(0,null);
list.add(1, "add your data from the server for this position");
list.add(2,null);
list.add(3,"add your data from the server for this position");
list.add(4,"add your data from the server for this position");
list.add(5,null);
list.add(6,"add your data from the server for this position");
list.add(7,null);
list.add(8,"add your data from the server for this position");
并在onBindViewHolder
进行一些更改,当您从列表中获取空对象时,您可以为该项设置这些值
ProfilePhotosViewHolder.imgProfilePhotos.setImageUrl(model.Images, imageLoader);
ProfilePhotosViewHolder.imgProfilePhotos.setDefaultImageResId(R.drawable.im_profile_monuments);
ProfilePhotosViewHolder.imgProfilePhotos.setErrorImageResId(R.drawable.bt_profile_addphoto);
更新
for (int i = 0; i < mDefaultImages.length; i++) {
photosModel = new ProfilePhotosModel();
photosModel.Images = mDefaultImages[i];
if (profilePhotosListData.size() == 0 || profilePhotosListData.size() == 1||profilePhotosListData.size() == 4||profilePhotosListData.size() == 6) {
profilePhotosListData.add(null);
profilePhotosListData.add(photosModel);
}else {
profilePhotosListData.add(photosModel);
}
}
答案 2 :(得分:0)
将代码更改为此:
AttributeError: 'function' object has no attribute 'get_extra_actions'