Advertisement
Guest User

ItemView height from loadedBitmap height

a guest
Mar 28th, 2015
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.85 KB | None | 0 0
  1. /*
  2.  * Copyright (C) 2014 Lucas Rocha
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *     http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16.  
  17.  
  18. import android.content.Context;
  19. import android.graphics.Bitmap;
  20. import android.support.v7.widget.RecyclerView;
  21. import android.util.Log;
  22. import android.view.LayoutInflater;
  23. import android.view.View;
  24. import android.view.ViewGroup;
  25. import android.widget.ImageView;
  26. import android.widget.TextView;
  27.  
  28. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  29. import com.nostra13.universalimageloader.core.ImageLoader;
  30. import com.nostra13.universalimageloader.core.assist.ImageScaleType;
  31. import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
  32.  
  33. import org.lucasr.twowayview.TwoWayLayoutManager;
  34. import org.lucasr.twowayview.widget.StaggeredGridLayoutManager;
  35. import org.lucasr.twowayview.widget.TwoWayView;
  36.  
  37. import java.util.Arrays;
  38. import java.util.List;
  39.  
  40. import de.lindenvalley.inspirations.R;
  41. import de.lindenvalley.inspirations.model.Data;
  42.  
  43. public class LayoutAdapter extends RecyclerView.Adapter<LayoutAdapter.SimpleViewHolder> {
  44.  
  45.     private final Context mContext;
  46.     private final TwoWayView mRecyclerView;
  47.     private final List<String> mItems;
  48.     private DisplayImageOptions options;
  49.     private final boolean isVertical;
  50.  
  51.  
  52.     public static class SimpleViewHolder extends RecyclerView.ViewHolder {
  53.         // each data item is just a string in this case
  54.         public TextView mTextView;
  55.         public ImageView mImageView;
  56.  
  57.         public SimpleViewHolder(View v) {
  58.             super(v);
  59.             mTextView = (TextView) v.findViewById(R.id.text);
  60.             mImageView = (ImageView) v.findViewById(R.id.image);
  61.         }
  62.     }
  63.  
  64.     public LayoutAdapter(Context context, TwoWayView recyclerView) {
  65.         mContext = context;
  66.  
  67.         mItems = Arrays.asList(Data.URLS);
  68.  
  69.         mRecyclerView = recyclerView;
  70.  
  71.         options = new DisplayImageOptions.Builder()
  72.                 .showImageOnLoading(R.color.silver)
  73. //                .showImageForEmptyUri(R.drawable.ic_empty)
  74. //                .showImageOnFail(R.drawable.ic_error)
  75.                 .cacheInMemory(true)
  76.                 .cacheOnDisk(true)
  77.                 .considerExifParams(true)
  78.                 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
  79. //                .displayer(new FadeInBitmapDisplayer(250))
  80.                 .bitmapConfig(Bitmap.Config.RGB_565)
  81.                 .build();
  82.  
  83.         isVertical = (mRecyclerView.getOrientation() == TwoWayLayoutManager.Orientation.VERTICAL);
  84.     }
  85.  
  86.     public void addItem(int position, String s) {
  87.         mItems.add(position, s);
  88.         notifyItemInserted(position);
  89.     }
  90.  
  91.     public void removeItem(int position) {
  92.         mItems.remove(position);
  93.         notifyItemRemoved(position);
  94.     }
  95.  
  96.     @Override
  97.     public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  98.         final View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_item, parent, false);
  99.         return new SimpleViewHolder(view);
  100.     }
  101.  
  102.     @Override
  103.     public void onBindViewHolder(SimpleViewHolder holder, int position) {
  104.         holder.mTextView.setText(String.valueOf(position));
  105.         final View itemView = holder.itemView;
  106.         final String imagePath = mItems.get(position);
  107.  
  108.         ImageLoader.getInstance().displayImage(imagePath, holder.mImageView, options, new SimpleImageLoadingListener() {
  109.             @Override
  110.             public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  111.                 super.onLoadingComplete(imageUri, view, loadedImage);
  112.                 Log.i("UIL", "onLoadingComplete view.getWidth() = " + view.getWidth() + " view.getHeight() = " + view.getHeight());
  113.                 Log.i("UIL", "onLoadingComplete w = " + loadedImage.getWidth() + " h = " + loadedImage.getHeight());
  114.  
  115.                 final StaggeredGridLayoutManager.LayoutParams lp =
  116.                         (StaggeredGridLayoutManager.LayoutParams) itemView.getLayoutParams();
  117.                 if (loadedImage.getWidth() > loadedImage.getHeight())
  118.                     lp.span = 2;
  119.                 else
  120.                     lp.span = 1;
  121.                 lp.height = loadedImage.getHeight();
  122.                 itemView.setLayoutParams(lp);
  123.             }
  124.         });
  125.     }
  126.  
  127.     @Override
  128.     public int getItemCount() {
  129.         return mItems.size();
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement