Anyone?

On Tuesday, June 14, 2016 at 3:57:37 PM UTC+3, Amitai Rosenberg wrote:
>
> I'm trying to generate a Palette for each CardView I have inside a 
> RecyclerView, and to color the card based on the Palette generated.
> However, for some weird reason, only the last two CardViews of the 
> RecyclerView get colored.
>
>
> This is my code:
>
>
> RecyclerAdapter:
>
> public class RecyclerAdapter : RecyclerView.Adapter, 
> Palette.IPaletteAsyncListener
>     {
>         private List<Book> mBooks;
>         private RecyclerView mRecyclerView;
>         private Context mContext;
>         private int mCurrentPosition = -1;
>         private bool isPaletteGenerated = false;
>         MyView myHolder;
>         public RecyclerAdapter(List<Book> books, RecyclerView recyclerView, 
> Context context)
>         {
>             mBooks = books;
>             mRecyclerView = recyclerView;
>             mContext = context;
>         }
>
>         public class MyView : RecyclerView.ViewHolder
>         {
>             public View mMainView { get; set; }
>             public TextView mTitle { get; set; }
>             public ImageView mCoverImage { get; set; }
>             public int mCoverImageResourceID { get; set; }
>             public CardView mCard { get; set; }
>
>             public MyView(View view) : base(view)
>             {
>                 mMainView = view;
>             }
>         }
>
>         public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup 
> parent, int viewType)
>         {
>
>             View bookItem = 
> LayoutInflater.From(parent.Context).Inflate(Resource.Layout.item_book, 
> parent, false);
>
>
>             TextView bookTitle = 
> bookItem.FindViewById<TextView>(Resource.Id.bookTitle);
>             ImageView coverImage = 
> bookItem.FindViewById<ImageView>(Resource.Id.coverImage);
>             CardView card = bookItem.FindViewById<CardView>(Resource.Id.card);
>
>             MyView view = new MyView(bookItem) { mTitle = bookTitle, 
> mCoverImage = coverImage, mCard = card};
>             return view;
>         }
>
>         public override async void OnBindViewHolder(RecyclerView.ViewHolder 
> holder, int position)
>         {
>             myHolder = holder as MyView;
>             myHolder.mMainView.Click += mMainView_Click;
>             myHolder.mTitle.Text = mBooks[position].Title;
>             
> myHolder.mCoverImage.SetImageDrawable(mBooks[position].Cover.Drawable);
>             myHolder.mCoverImageResourceID = mBooks[position].imageResourceId;
>
>             if (position > mCurrentPosition)
>             {
>                 int currentAnim = Resource.Animation.slide_left_to_right;
>                 //SetAnimation(myHolder.mMainView, currentAnim);
>                 mCurrentPosition = position;
>             }
>
>             Bitmap photo = await 
> BitmapFactory.DecodeResourceAsync(mContext.Resources, 
> myHolder.mCoverImageResourceID);
>             BitmapDrawable bitmapDrawable = 
> ((BitmapDrawable)mBooks[position].Cover.Drawable);
>             Bitmap image = bitmapDrawable.Bitmap;
>
>             var palette = 
> Palette.From(photo).MaximumColorCount(16).Generate(this);
>
>
>         }   
>
>         public void OnGenerated(Palette palette)
>         {
>
>             if (palette == null)
>                 return;
>             try
>             {
>                 if (palette.LightVibrantSwatch != null)
>                 {
>                     var lightVibrant = new 
> Color(palette.LightVibrantSwatch.Rgb);
>                     myHolder.mCard.SetCardBackgroundColor(lightVibrant);
>                 }
>                 if (palette.DarkVibrantSwatch != null)
>                 {
>                     var darkVibrant = new 
> Color(palette.DarkVibrantSwatch.Rgb);
>                     myHolder.mCard.SetCardBackgroundColor(darkVibrant);
>                 }
>             }
>             catch (Exception ex)
>             {
>
>             }
>
>         }
>
>         public override int ItemCount
>         {
>             get { return mBooks.Count; }
>         }
>     }
>
>
> Fragment in which the RecyclerView is inside:
>
> public override View OnCreateView(LayoutInflater inflater, ViewGroup 
> container, Bundle savedInstanceState)
>     {
>
>         mRecyclerView = 
> view.FindViewById<RecyclerView>(Resource.Id.booksRecyclerView);
>         mBooks = new List<Book>();
>         ImageView cover = new ImageView(Activity);
>
>         cover.SetImageResource(Resource.Drawable.Torat_Hamachane1);
>         mBooks.Add(new Book() { Title = "תורת המחנה א' - הלכות יום ויום", 
> Cover = cover, imageResourceId = Resource.Drawable.Torat_Hamachane1}); 
>
>
>         mLayoutManager = new GridLayoutManager(Activity, 2);
>         mRecyclerView.SetForegroundGravity(GravityFlags.CenterHorizontal);
>         mRecyclerView.SetLayoutManager(mLayoutManager);
>         SimpleItemAnimator x = null;
>
>         mRecyclerView.SetItemAnimator(x);
>         mAdapter = new RecyclerAdapter(mBooks, mRecyclerView, Activity);
>         mRecyclerView.SetAdapter(mAdapter);
>
>
>         cover = new ImageView(Activity);
>         cover.SetImageResource(Resource.Drawable.kitzurTHM);
>         mBooks.Add(new Book() { Title = "קיצור תורת המחנה - הלכות יום ויום 
> ושבת", Cover = cover, imageResourceId = Resource.Drawable.kitzurTHM });
>
>         cover = new ImageView(Activity);
>         cover.SetImageResource(Resource.Drawable.halkasPurim);
>         mBooks.Add(new Book() { Title = "הלכה כסדרה - הלכות פורים", Cover = 
> cover, imageResourceId = Resource.Drawable.halkasPurim });
>
>         cover = new ImageView(Activity);
>         cover.SetImageResource(Resource.Drawable.halkasPesach);
>         mBooks.Add(new Book() { Title = "הלכה כסדרה - הלכות פסח", Cover = 
> cover, imageResourceId= Resource.Drawable.halkasPesach });
>
>         cover = new ImageView(Activity);
>         cover.SetImageResource(Resource.Drawable.netzach);
>         mBooks.Add(new Book() { Title = "שו\"ת נצח יהודה", Cover = cover , 
> imageResourceId = Resource.Drawable.netzach});
>
>         cover = new ImageView(Activity);
>         cover.SetImageResource(Resource.Drawable.tankim);
>         mBooks.Add(new Book() { Title = "טיפול בטנקים בשבת", Cover = cover , 
> imageResourceId = Resource.Drawable.tankim});
>
>         cover = new ImageView(Activity);
>         cover.SetImageResource(Resource.Drawable.tipulBeChalalim);
>         mBooks.Add(new Book() { Title = "טיפול בחללים בשבת", Cover = cover , 
> imageResourceId = Resource.Drawable.tipulBeChalalim});
>         return view;
>
>     }
>
>
>
> Hope someone can please help me find out why only the last two items get 
> colored.
>
> Thanks!
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-developers/1872b975-0bb9-4629-a717-fd9e1305a4aa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to