Recyclerview 滚动时自动更改项目位置

2023-12-24

在我的应用程序中,我有自定义适配器,当我滚动 RecyclerView 时,适配器有图像和文本,某些项目位置自动更改

    public class MyPhotosAdapter extends RecyclerView.Adapter<MyPhotosAdapter.ViewHolder> implements View.OnClickListener {

        private PojoClasses.DashboardPhotos[] dashboardPhotoses;
        private static final int TWEET_COMPOSER_REQUEST_CODE = 500;
        Activity mActivity;
        private ProgressDialog pDialog;
        private static final String IMAGE_DIRECTORY_NAME = "My City Tag";
        static File mediaFile;
        static File mediaStorageDir;
        static String mediaName = null;
        static Integer twCurrent, fbCurrent;
        ShareDialog  shareDialog;
        CallbackManager callbackManager;
        private static final String CURRENT_USER_VIOLATION_ID = "twuserVId";
        private static final String PREF_KEY_FACEBOOK_LOGIN = "facebook_loggedin";
        private static final String PREF_KEY_TWITTER_LOGIN = "twitter_loggedin";
        private static final String PREF_NAME = "my city tag";
        private static SharedPreferences mSharedPreferences;
        boolean isLoggedInTW;
        boolean isLoggedInFB;
        int isShareFb = 0;
        DBHelper dbHelper;



        public MyPhotosAdapter(PojoClasses.DashboardPhotos[] dashboardPhotoses) {
            this.dashboardPhotoses = dashboardPhotoses;
        }

        public MyPhotosAdapter(Activity activity, PojoClasses.DashboardPhotos[] dashboardPhotoses) {
            this.dashboardPhotoses = dashboardPhotoses;
            mActivity = activity;
        }

        // Create new views (invoked by the layout manager)
        @Override
        public MyPhotosAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                             int viewType) {

            FacebookSdk.sdkInitialize(mActivity);
            callbackManager = CallbackManager.Factory.create();
            TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY,TWITTER_SECRET);
            Fabric.with(mActivity, new com.twitter.sdk.android.Twitter(authConfig));

            // create a new view
            View itemLayoutView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.custom_photo, null);

            dbHelper = new DBHelper(mActivity);

            Fabric.with(mActivity, new TweetComposer());

            shareDialog=new ShareDialog(mActivity);

            /* Initialize application preferences */
            mSharedPreferences = mActivity.getSharedPreferences(PREF_NAME, 0);
            isLoggedInFB = mSharedPreferences.getBoolean(PREF_KEY_FACEBOOK_LOGIN, false);
            isLoggedInTW = mSharedPreferences.getBoolean(PREF_KEY_TWITTER_LOGIN, false);

            // create ViewHolder

            ViewHolder viewHolder = new ViewHolder(itemLayoutView);
            return viewHolder;
        }

        // Replace the contents of a view (invoked by the layout manager)
        @Override
        public void onBindViewHolder(ViewHolder viewHolder, int position) {

            // - get data from your itemsData at this position
            // - replace the contents of the view with that itemsData

            viewHolder.mImageViewCapUser.setImageBitmap(dashboardPhotoses[position].getThumbnail());
            viewHolder.txtDescription.setText(dashboardPhotoses[position].getDescription());
            viewHolder.txtDate.setText(dashboardPhotoses[position].getCreatedDate());
            viewHolder.txtViolation.setText(dashboardPhotoses[position].getViolation());
            final int FB = dashboardPhotoses[position].getIsShareFb();
            final int TW = dashboardPhotoses[position].getIsShareTw();

            final int priority = dashboardPhotoses[position].getPriority();
            switch (priority) {
                case 2:
                    viewHolder.mImageViewPriority.setBackgroundColor(Color.parseColor("#D50000"));
                    break;
                case 3:
                    viewHolder.mImageViewPriority.setBackgroundColor(Color.parseColor("#FF9800"));
                    break;
                case 4:
                    viewHolder.mImageViewPriority.setBackgroundColor(Color.parseColor("#FFEB3B"));
                    break;
            }

            viewHolder.mImageViewIcon.setTag(dashboardPhotoses[position]);
            if (FB == 0) {
                viewHolder.mImageViewIcon.setImageResource(R.drawable.ic_action_share);
                viewHolder.mImageViewIcon.setFocusable(false);
                viewHolder.mImageViewIcon.setFocusableInTouchMode(false);
                viewHolder.mImageViewIcon.setClickable(true);
                viewHolder.mImageViewIcon.setOnClickListener(this);
            } else if (TW == 0) {
                viewHolder.mImageViewIcon.setImageResource(R.drawable.ic_action_share);
                viewHolder.mImageViewIcon.setFocusable(false);
                viewHolder.mImageViewIcon.setFocusableInTouchMode(false);
                viewHolder.mImageViewIcon.setClickable(true);
                viewHolder.mImageViewIcon.setOnClickListener(this);
            } else {
                viewHolder.mImageViewIcon.setImageResource(R.mipmap.ic_send);
            }

            viewHolder.txtDescription.setTag(dashboardPhotoses[position]);
            if (FB == 0) {

                viewHolder.txtDescription.setFocusable(false);
                viewHolder.txtDescription.setFocusableInTouchMode(false);
                viewHolder.txtDescription.setClickable(true);
                viewHolder.txtDescription.setOnClickListener(this);
            } else if (TW == 0) {

                viewHolder.txtDescription.setFocusable(false);
                viewHolder.txtDescription.setFocusableInTouchMode(false);
                viewHolder.txtDescription.setClickable(true);
                viewHolder.txtDescription.setOnClickListener(this);
            } else {

            }
        }

        @Override
        public void onClick(View v) {
            PojoClasses.DashboardPhotos dashboardPhotos;
            switch (v.getId()){
                case R.id.imgv_Icon_list:
                    dashboardPhotos = (PojoClasses.DashboardPhotos) v.getTag();
                    int fb = dashboardPhotos.getIsShareFb();
                    int tw = dashboardPhotos.getIsShareTw();
                    if(fb == 0 && tw == 0) {
                        selectSocial(dashboardPhotos);
                    }
                    else if(fb == 0){
                        selectSocialfb(dashboardPhotos);
                    }
                    else if(tw == 0){
                        selectSocialtw(dashboardPhotos);
                    }

                    break;
                case R.id.txt_tag_des:
                    dashboardPhotos = (PojoClasses.DashboardPhotos) v.getTag();
                    Intent i = new Intent(mActivity,EditViolationActivity.class);
                    i.putExtra("UserViolationId",dashboardPhotos.getUserViolationId());
                    mActivity.startActivity(i);
                    break;
            }

        }

        // inner class to hold a reference to each item of RecyclerView
        public static class ViewHolder extends RecyclerView.ViewHolder {

            public static TextView txtDescription;
            public ImageView mImageViewCapUser;
            public TextView txtDate;
            public TextView txtViolation;
            public static ImageView mImageViewIcon;
            public View mImageViewPriority;

            public ViewHolder(View itemLayoutView) {
                super(itemLayoutView);
                txtDescription = (TextView) itemLayoutView.findViewById(R.id.txt_tag_des);
                txtDate = (TextView) itemLayoutView.findViewById(R.id.txt_date);
                txtViolation = (TextView) itemLayoutView.findViewById(R.id.txt_violation);
                mImageViewCapUser = (ImageView) itemLayoutView.findViewById(R.id.imgv_capture_user);
                mImageViewIcon = (ImageView) itemLayoutView.findViewById(R.id.imgv_Icon_list);
                mImageViewPriority = itemLayoutView.findViewById(R.id.imgv_priority);
            }
        }


        @Override
        public int getItemCount() {

            return dashboardPhotoses.length;
        }
}

如果有人能解决该特定问题,请帮助我。

提前致谢


在 switch 语句中添加默认值

 default:
    viewHolder.mImageViewPriority.setBackgroundColor("Default color here for other priorities");
 break;

并将默认值放入else你全部的一部分if else状况

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Recyclerview 滚动时自动更改项目位置 的相关文章

随机推荐

  • 是否可以在 Mountain Lion 上当前的 Xcode 4.6.1 工具链中启用 _LIBCPP_DEBUG2?

    这个线程 http comments gmane org gmane comp compilers clang devel 16838是对 clang 的 libc 调试模式的早期讨论 该模式通过定义来启用 LIBCPP DEBUG2在编译
  • 在 R 中添加新行

    我需要在后面添加一个新行 我的数据如下所示 1 60112 486 100 xxx BS 1 1 486 100 yyy TE I need 1 60112 486 100 xxx BS 1 1 486 100 yyy TE 我怎样才能实现
  • 无法达到最佳性能

    我正在努力达到每个人的最佳表现SM从下面的代码 峰值位于 25 GFlops GTX275 GT200 Arch 之间 此代码最多提供 8 GFlops global void new ker float x int index threa
  • 适用于 GAE 的 Python 无头浏览器

    我正在尝试将 Angular js 客户端与 Google Appengine 上的 webapp2 一起使用 为了解决 SEO 问题 我们的想法是使用无头浏览器在服务器端运行 javascript 并将生成的 html 提供给爬虫 有没有
  • 如何覆盖 Nixos configuration.nix 中的 2(两个)包

    我的configuration nix 中有一些需要覆盖的包 所以我写的代码如下 nixpkgs config allowUnfree true packageOverrides pkgs rec mumble pulse audio mu
  • 在 JavaScript 中获取字体规格?

    我目前正在开发一个使用 HTML5 画布作为渲染目标的 JavaScript 项目 为了使我的代码能够很好地与我提供的 严格指定的 接口配合使用 我需要能够获取一种字体并提取该字体的上升和下降高度 这将使客户能够更准确地定位文本 我知道我可
  • 如何去掉多余的双引号?

    在格式错误的 csv 文件中 有一行数据带有额外的双引号 例如最后一行 Name Comment Peter Nice singer Paul Love folk songs 如何删除周围的双引号folk并将字符串替换为 Name Comm
  • 在 3NF 中找到关系,但在 BCNF 中找不到关系

    我一直在阅读许多不同的资料来了解如何区分 3NF BCNF 中的关系 到目前为止 这是我的理解 我将使用这种关系作为例子 R A B C D E and F A gt B B C gt E E D gt A 首先我们必须找到关系的关键 我用
  • 你如何解析悬空的 else ?

    我正在为 C 语言编写一个编译器 我只剩下一个问题需要解决 如何处理悬空的 else 原来的规则是这样的 A gt if 表达式 语句 if 表达式 语句 else 语句 摆脱左递归后 A gt if 表达式 语句 B B gt else
  • 如何有效地比较两个无序列表(而不是集合)?

    a 1 2 3 1 2 3 b 3 2 1 3 2 1 a 和 b 应该被认为是相等的 因为它们具有完全相同的元素 只是顺序不同 问题是 我的实际列表将由对象 我的类实例 组成 而不是整数 O n The 柜台 https docs pyt
  • 如何绘制多列 CSV 文件?

    我对 R 很陌生 所以请原谅我问一个可能很愚蠢的问题 我有一个多列 CSV 纯逗号分隔 无引号 文件 其中第一行是标题 第一列是连续的整数索引 其他 17 列是函数的浮点值 任务是在同一张图表上绘制所有 17 条线 具有相同的轴 听起来很简
  • 在不使用 startwith 函数的情况下从字符串中间提取特定单词?

    我正在尝试从列表中提取变量的名称 我已将列表声明为list end 并且在for循环中 我希望for循环读取列表中的每个字符串 如果在字符串中找到 int 则它从int开始并以list end结束 并且添加到空list variable d
  • 为什么这个渐进式 jpeg 不逐步加载?

    我的网站上有一些大图像 因此我将它们保存为渐进式 jpeg 这样用户应该可以在下载时看到正在发生的事情 但在下载整个 jpeg 之前的几秒钟内什么也没有显示 我究竟做错了什么 网站 大图应该很明显 http www heylookthats
  • Rails 5 白名单 css 属性用于清理助手

    我需要允许内联 style position absolute 输出由sanitize post content 我发现Rails 4 的文档 http apidock com rails v4 0 2 ActionView Helpers
  • WebSocket 版本和向后兼容性

    过去几天我一直在尝试 WebSocket 并且对这项非常酷的新技术有一些复杂的体验 我编写了一个简单的聊天客户端 它使用最新版本HTML5 实验室 http html5labs interoperabilitybridges com pro
  • 如何在java中使条形图中的条形从x轴开始? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 正如您在图片中看到的 图表中的条形从 x 轴下方开始 如何修复它以使其从 x 轴线开始 请建议我修复 我也会帮助知道我哪
  • WebRTC 视频流无法通过 http 工作

    我正在尝试使用 WebRTC Peer js 创建游戏 而且我无法通过 http 进行视频通话 也许它只能通过https 附 所有 我看到的 媒体通话的工作示例都使用 https 1 http cdn peerjs com demo vid
  • Spring R2dbc:有没有办法从postgresql数据库获取恒定流并处理它们?

    我想将 postgresql 中的表中新创建的记录作为实时 连续流获取 可以使用spring r2dbc吗 如果是这样 我有什么选择 Thanks 你需要使用pg notify并开始在上面列出 您想要看到的任何更改都应该包含在简单的触发器中
  • 将哈希数组转换为 json

    我想转换我创建的哈希数组 如下所示 while push ranks id gt id time gt time To JSON use JSON j new JSON print j gt encode json ranks gt ran
  • Recyclerview 滚动时自动更改项目位置

    在我的应用程序中 我有自定义适配器 当我滚动 RecyclerView 时 适配器有图像和文本 某些项目位置自动更改 public class MyPhotosAdapter extends RecyclerView Adapter