android - 回收站 View 滚动不流畅

标签 android android-recyclerview smooth-scrolling

我创建了一个包含不同类型 subview 的社交帖子回收 View 。 每个 child 多个 layout.recyclerview 工作正常,唯一的问题是 recyclerview 滚动不流畅。
我们的代码

@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 持有者

  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);
    }
}    

我们使用了 3 个与上述 viewholder 相同的 viewholder

最佳答案

我知道,我来晚了一点,但我很确定你的问题是因为你正在使用 de.hdodenhof.circleimageview.CircleImageView

在列表中使用此自定义 ImageView 时,性能似乎很差。我建议使用另一种方法将图像转换为圆圈。

关于android - 回收站 View 滚动不流畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155853/

相关文章:

javascript - Smoothscroll 在 chrome 中不起作用,但在其他浏览器中起作用

Android Toast 崩溃

php - 在android中创建动态表单

android - 在损坏的手机屏幕上启用 USB 调试

android - RecyclerView 水平滚动对齐在中心

javascript - 如何实现水平和垂直平滑滚动

android - 如何对 Kotlin Flow 中包含的列表中的元素调用方法

android - 如何将 videoView 与 imageView 和 recyclerView 一起制作动画?

android - 在约束布局中使 RecyclerView 的高度为 "wrap_content"

android - recyclerView 第一次滚动不流畅