1

I have create a social post recyclerview that contains different type child view. and each child multiple layout.recyclerview works fine only problem in recyclerview scrolling are not smoothly.
our code

@Override public int getItemViewType(int position) { if (arrSocial_Post_Model.get(position) != null) { Social_Post_Model objSocial_Post_Model = arrSocial_Post_Model.get(position); if (objSocial_Post_Model.getPost_type().equalsIgnoreCase("1")) return VIEW_FRIEND_SUGGESTION; else if (objSocial_Post_Model.getPost_type().equalsIgnoreCase("special_post") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("2") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("3")) return VIEW_SPECIAL_POST; else if (objSocial_Post_Model.getPost_type().equalsIgnoreCase("4") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("5") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("6")) return VIEW_INFLUNENCER_POST; else if (objSocial_Post_Model.getPost_type().equalsIgnoreCase("7") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("8") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("9") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("10") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("11") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("12") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("13") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("14") || objSocial_Post_Model.getPost_type().equalsIgnoreCase("15")) return VIEW_PURCHASE_SUGGESION; else return VIEW_PROG; } else return VIEW_PROG; } 

view holder

 public static class OtherViewHolder extends RecyclerView.ViewHolder { public LinearLayout layout_share_influencer; public de.hdodenhof.circleimageview.CircleImageView img_share_user; public TextView textview_share_username; //social and private top layout public View social_private_top_layout; public LinearLayout layout_search_edit; public ImageView imageView_notification; public de.hdodenhof.circleimageview.CircleImageView profile_image_socialpost; public EditText frnd_search_socialpost; public RelativeLayout layout_notification_socialpost; public TextView textView_notification_count_value_socialpost; public LinearLayout lay_post_influance_socialpost, lay_share_purchase_socialpost, lay_ask_suggestion_socialpost; //Profile Top Layout public View profileTopLayout; public de.hdodenhof.circleimageview.CircleImageView profile_image; public EditText frnd_search; public RelativeLayout layout_notification; public TextView textView_notification_count_value; public ImageView imageView_profile_cover; public TextView textview_profile_name; public ImageView image_update_profile; public LinearLayout layout_frined, layout_followers; public TextView textView_friends_total, textView_followers_total; public ImageView img_lock_friends, img_lock_follow; public TextView textView_upgrade; public LinearLayout layout_create_post, layout_Addfriends_follow; public LinearLayout lay_post_influance, lay_share_purchase, lay_ask_suggestion; public TextView textview_add_friend, textView_follow; public ImageView img_follow_done, img_friend_done; ///////// public LinearLayout lay_post_top; public ImageView imageview_edit_post; public TextView textview_post_Datetime; public de.hdodenhof.circleimageview.CircleImageView img_Posted_user; public ImageView tag_friend_image; public ImageView img_post_type; public LinearLayout layout_tag_friend; public TextView textview_post_other_detail; public TextView textview_Tagged_friend; public TextView textview_posttype_detail; //other public LinearLayout layout_from_to_destination; public TextView textview_service_from; public TextView textview_service_destination; public TextView post_detail, post_detail_deal_coupon; public ImageView img_service_icon; public ImageView image_copy; public TextView textview_earned_cashback; public ImageView img_posted_product; public TextView textView_sellername; public ImageView seller_image; //rating bar public LinearLayout layout_rating; public TextView textview_rating_value; public RatingBar ratingbar_star; public TextView textView_price; public Button btn_gotodeal; public TextView textview_recommended_seller; // like comment share congrates and other public ImageView image_congrates, image_buy, image_notbuy, image_like, image_share_post; public LinearLayout post_bottom_Layout_purchase, post_bottom_Layout_suggestion, postbottom_layout_for_share; public TextView txt_congrates_count; public TextView txt_comments_count_p; public TextView txt_buy_count; public TextView txt_notbuy_count; public TextView txt_comments_count_s; public TextView txt_like_count; public TextView txt_comments_count_share; public TextView txt_Share_count_share; public LinearLayout layout_purchase_comment_click; public LinearLayout layout_suggestion_comment_click; public LinearLayout layout_share_comment_click; private LinearLayout layout_congratulate; private LinearLayout layout_sug_buy; private LinearLayout layout_sug_Notbuy; private LinearLayout layout_Like; private LinearLayout layout_share; public TextView textview_congratulate; public TextView textview_sug_buy; public TextView textview_sug_not_buy; public TextView textview_Like; public TextView textview_Share; private TextView textview_comment_in_share; private TextView textview_comment_in_suggestion; private TextView textview_comment_purchase; //*Child content*//* public de.hdodenhof.circleimageview.CircleImageView img_comment_user1; public TextView textview_commented_username1; public TextView comment_text1; public de.hdodenhof.circleimageview.CircleImageView img_comment_user2; public TextView textview_commented_username2; public TextView comment_text2; public LinearLayout layout_post_child; public LinearLayout layout_post_child_one; public OtherViewHolder(View itemView) { super(itemView); //social and private top layout social_private_top_layout = itemView.findViewById(R.id.social_private_top_layout); layout_search_edit = (LinearLayout) social_private_top_layout.findViewById(R.id.layout_search_edit); imageView_notification = (ImageView) social_private_top_layout.findViewById(R.id.imageView_notification); profile_image_socialpost = (de.hdodenhof.circleimageview.CircleImageView) social_private_top_layout.findViewById(R.id.profile_image); frnd_search_socialpost = (EditText) social_private_top_layout.findViewById(R.id.frnd_search); layout_notification_socialpost = (RelativeLayout) social_private_top_layout.findViewById(R.id.layout_notification); textView_notification_count_value_socialpost = (TextView) social_private_top_layout.findViewById(R.id.textView_notification_count_value); lay_post_influance_socialpost = (LinearLayout) social_private_top_layout.findViewById(R.id.lay_post_influance); lay_share_purchase_socialpost = (LinearLayout) social_private_top_layout.findViewById(R.id.lay_share_purchase); lay_ask_suggestion_socialpost = (LinearLayout) social_private_top_layout.findViewById(R.id.lay_ask_suggestion); //profile top layout profileTopLayout = itemView.findViewById(R.id.profile_layout); profile_image = (de.hdodenhof.circleimageview.CircleImageView) profileTopLayout.findViewById(R.id.profile_image); frnd_search = (EditText) profileTopLayout.findViewById(R.id.frnd_search); layout_notification = (RelativeLayout) profileTopLayout.findViewById(R.id.layout_notification); textView_notification_count_value = (TextView) profileTopLayout.findViewById(R.id.textView_notification_count_value); imageView_profile_cover = (ImageView) profileTopLayout.findViewById(R.id.imageView_profile_cover); image_update_profile = (ImageView) profileTopLayout.findViewById(R.id.image_update_profile); textview_profile_name = (TextView) profileTopLayout.findViewById(R.id.textview_profile_name); layout_frined = (LinearLayout) profileTopLayout.findViewById(R.id.layout_frined); layout_followers = (LinearLayout) profileTopLayout.findViewById(R.id.layout_followers); textView_friends_total = (TextView) profileTopLayout.findViewById(R.id.textView_friends_total); textView_followers_total = (TextView) profileTopLayout.findViewById(R.id.textView_followers_total); img_lock_friends = (ImageView) profileTopLayout.findViewById(R.id.img_lock_friends); img_lock_follow = (ImageView) profileTopLayout.findViewById(R.id.img_lock_follow); textView_upgrade = (TextView) profileTopLayout.findViewById(R.id.textView_upgrade); layout_create_post = (LinearLayout) profileTopLayout.findViewById(R.id.layout_create_post); layout_Addfriends_follow = (LinearLayout) profileTopLayout.findViewById(R.id.layout_Addfriends_follow); lay_post_influance = (LinearLayout) profileTopLayout.findViewById(R.id.lay_post_influance); lay_share_purchase = (LinearLayout) profileTopLayout.findViewById(R.id.lay_share_purchase); lay_ask_suggestion = (LinearLayout) profileTopLayout.findViewById(R.id.lay_ask_suggestion); textview_add_friend = (TextView) profileTopLayout.findViewById(R.id.textview_add_friend); textView_follow = (TextView) profileTopLayout.findViewById(R.id.textView_follow); img_follow_done = (ImageView) profileTopLayout.findViewById(R.id.img_follow_done); img_friend_done = (ImageView) profileTopLayout.findViewById(R.id.img_friend_done); /////influencer share layout_share_influencer = (LinearLayout) itemView.findViewById(R.id.layout_share_influencer); img_share_user = (de.hdodenhof.circleimageview.CircleImageView) itemView.findViewById(R.id.img_share_user); textview_share_username = (TextView) itemView.findViewById(R.id.textview_share_username); //////////// lay_post_top = (LinearLayout) itemView.findViewById(R.id.lay_post_top); tag_friend_image = (ImageView) itemView.findViewById(R.id.tag_friend_image); img_post_type = (ImageView) itemView.findViewById(R.id.img_post_type); textview_post_other_detail = (TextView) itemView.findViewById(R.id.textview_post_other_detail); textview_post_Datetime = (TextView) itemView.findViewById(R.id.textview_post_Datetime); imageview_edit_post = (ImageView) itemView.findViewById(R.id.imageview_edit_post); img_Posted_user = (de.hdodenhof.circleimageview.CircleImageView) itemView.findViewById(R.id.img_Posted_user); layout_tag_friend = (LinearLayout) itemView.findViewById(R.id.layout_tag_friend); textview_Tagged_friend = (TextView) itemView.findViewById(R.id.textview_Tagged_friend); textview_posttype_detail = (TextView) itemView.findViewById(R.id.textview_posttype_detail); //other layout_from_to_destination = (LinearLayout) itemView.findViewById(R.id.layout_from_to_destination); textview_service_from = (TextView) itemView.findViewById(R.id.textview_service_from); textview_service_destination = (TextView) itemView.findViewById(R.id.textview_service_destination); post_detail = (TextView) itemView.findViewById(R.id.post_detail); post_detail_deal_coupon = (TextView) itemView.findViewById(R.id.post_detail_deal_coupon); img_service_icon = (ImageView) itemView.findViewById(R.id.img_service_icon); image_copy = (ImageView) itemView.findViewById(R.id.image_copy); textview_earned_cashback = (TextView) itemView.findViewById(R.id.textview_earned_cashback); img_posted_product = (ImageView) itemView.findViewById(R.id.img_posted_product); textView_sellername = (TextView) itemView.findViewById(R.id.textView_sellername); seller_image = (ImageView) itemView.findViewById(R.id.seller_image); //rating bar layout_rating = (LinearLayout) itemView.findViewById(R.id.layout_rating); textview_rating_value = (TextView) itemView.findViewById(R.id.textview_rating_value); ratingbar_star = (RatingBar) itemView.findViewById(R.id.ratingbar_star); textView_price = (TextView) itemView.findViewById(R.id.textView_price); btn_gotodeal = (Button) itemView.findViewById(R.id.btn_Gotodeal); textview_recommended_seller = (TextView) itemView.findViewById(R.id.textview_recommended_seller); // like comment share congrates and other image_congrates = (ImageView) itemView.findViewById(R.id.image_congrates); image_buy = (ImageView) itemView.findViewById(R.id.image_buy); image_notbuy = (ImageView) itemView.findViewById(R.id.image_notbuy); image_like = (ImageView) itemView.findViewById(R.id.image_like); image_share_post = (ImageView) itemView.findViewById(R.id.image_share_post); txt_comments_count_p = (TextView) itemView.findViewById(R.id.txt_comments_count_p); txt_congrates_count = (TextView) itemView.findViewById(R.id.txt_congrates_count); txt_buy_count = (TextView) itemView.findViewById(R.id.txt_buy_count); txt_notbuy_count = (TextView) itemView.findViewById(R.id.txt_notbuy_count); txt_comments_count_s = (TextView) itemView.findViewById(R.id.txt_comments_count_s); txt_like_count = (TextView) itemView.findViewById(R.id.txt_like_count); txt_comments_count_share = (TextView) itemView.findViewById(R.id.txt_comments_count_share); txt_Share_count_share = (TextView) itemView.findViewById(R.id.txt_Share_count_share); textview_congratulate = (TextView) itemView.findViewById(R.id.textview_congratulate); textview_sug_buy = (TextView) itemView.findViewById(R.id.textview_sug_buy); textview_sug_not_buy = (TextView) itemView.findViewById(R.id.textview_sug_not_buy); textview_Like = (TextView) itemView.findViewById(R.id.textview_Like); textview_Share = (TextView) itemView.findViewById(R.id.textview_Share); textview_comment_in_share = (TextView) itemView.findViewById(R.id.textview_comment_in_share); textview_comment_in_suggestion = (TextView) itemView.findViewById(R.id.textview_comment_in_suggestion); textview_comment_purchase = (TextView) itemView.findViewById(R.id.textview_comment_purchase); post_bottom_Layout_purchase = (LinearLayout) itemView.findViewById(R.id.postbottom_layout_for_purchase); post_bottom_Layout_suggestion = (LinearLayout) itemView.findViewById(R.id.postbottom_layout_for_suggestion); postbottom_layout_for_share = (LinearLayout) itemView.findViewById(R.id.postbottom_layout_for_share); layout_purchase_comment_click = (LinearLayout) itemView.findViewById(R.id.purchase_comment_click); layout_suggestion_comment_click = (LinearLayout) itemView.findViewById(R.id.suggestion_comment_click); layout_share_comment_click = (LinearLayout) itemView.findViewById(R.id.share_comment_click); layout_congratulate = (LinearLayout) itemView.findViewById(R.id.layout_cong); layout_sug_buy = (LinearLayout) itemView.findViewById(R.id.layout_buy); layout_sug_Notbuy = (LinearLayout) itemView.findViewById(R.id.layout_Notbuy); layout_Like = (LinearLayout) itemView.findViewById(R.id.share_Like_click); layout_share = (LinearLayout) itemView.findViewById(R.id.share_share_click); //*child content*//* img_comment_user1 = (de.hdodenhof.circleimageview.CircleImageView) itemView.findViewById(R.id.image_commented_user1); textview_commented_username1 = (TextView) itemView.findViewById(R.id.textview_commented_username1); comment_text1 = (TextView) itemView.findViewById(R.id.comment_text1); img_comment_user2 = (de.hdodenhof.circleimageview.CircleImageView) itemView.findViewById(R.id.image_commented_user2); textview_commented_username2 = (TextView) itemView.findViewById(R.id.textview_commented_username2); comment_text2 = (TextView) itemView.findViewById(R.id.comment_text2); layout_post_child = (LinearLayout) itemView.findViewById(R.id.layout_post_child); layout_post_child_one = (LinearLayout) itemView.findViewById(R.id.layout_post_child_one); } } 

we use 3 more viewholder same as above viewholder

8
  • are you performing any calculation task on recycler view adapter? Commented Nov 7, 2017 at 10:41
  • Is your RecyclerView's have NestedScrollView parent ? Commented Nov 7, 2017 at 10:42
  • 3
    Your view holder seems to be using an extremely complicated layout which has performance penalties. You don't show how you load and set the values of these views. Also, the way you determine the view type is super slow compared to a switch with strings. Commented Nov 7, 2017 at 10:46
  • 2
    One of the scariest views I've ever seen!!! With those complicated views in your recyclerview, there's no way but reduce the view to boost your ReyclerView performance. Commented Nov 7, 2017 at 10:48
  • Why not using multiple ViewHolders and inflate the relevant one according to the view type? Commented Nov 7, 2017 at 10:48

2 Answers 2

3

I know, I'm a little late to the party, but I'm pretty confident your issue is because you are using de.hdodenhof.circleimageview.CircleImageView.

The performance seems to be very poor when using this custom ImageView within a list. I would suggest an alternative method to converting images to circles.

Sign up to request clarification or add additional context in comments.

Comments

1

Try the following solutions

  1. Optimize images used to correct size. Over sized bitmaps in the ImageViews take up a lot of memory. This link is helpful to optimise images

  2. If step 1 did not solved your problem, enable hardware acceleration for the view or activity.

    android:layerType="hardware" 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.