在基本适配器中滚动后,TextView 值更改回之前的值

2023-12-12

我一直在研究这个问题,但找不到解决方案。关于我的自定义列表视图的所有内容似乎都运行正常。当我点击holder.feedUpVoteButton,文本发生变化+=1正确。但是,当我向下滚动并向上滚动时,文本值将恢复为单击之前的值。

我拒绝使用notifyDatasetChanged因为我没有添加任何内容或从列表中删除任何内容。

public class CustomFeedListViewAdapter extends BaseAdapter{

    CustomFeedListViewAdapter customFeedListViewAdapter;
    Date createdAt, currentDate; int num;
    static HashMap<String, String> oneData = new HashMap<String, String>();
    HashMap<String, String> iFeed = new HashMap<>();


    private String likesString;

    String upVoteClicked, downVoteClicked;
    HashMap<String, String> mFeed = new HashMap<>();
    List<ParseObject>  mObjects;

    private ParseObject parseObFeed;

        CustomFeedListViewAdapter(Context context, ArrayList<HashMap<String, String>> data) {

        super();
        this.mContext = context;
        GlobalFeedTab.arrayFeedList = data;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }


    @Override
    public int getCount() {
        return GlobalFeedTab.arrayFeedList.size();
    }

    @Override
    public Object getItem(int i) {
        return GlobalFeedTab.arrayFeedList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

         likes = new int[GlobalFeedTab.arrayFeedList.size()];
         countryNames = new int[GlobalFeedTab.arrayFeedList.size()];
        dateNames = new String[GlobalFeedTab.arrayFeedList.size()];

       final ViewHolder holder;

        if (view == null) {

            position = i;

            view = inflater.inflate(R.layout.feed_list_row, viewGroup, false);

            holder = new ViewHolder();


            holder.feedNumOfLikes = (TextView) view.findViewById(R.id.feedNumofLikes);
            holder.feedUpVoteButton = (Button) view.findViewById(R.id.feedUpVoteButton);



        } else {
            position = i;
            holder = (ViewHolder) view.getTag();
        }


        mFeed = GlobalFeedTab.arrayFeedList.get(position);

        holder.feedNumOfLikes.setText(mFeed.get("likes"));

        likesString = mFeed.get("likes");
        likes[position] = Integer.valueOf(likesString);

        holder.feedUpVoteButton.setTag(position);

        ParseQuery<ParseObject> query2 = new ParseQuery<ParseObject>("FeedItem");
        query2.setLimit(250);
        query2.addDescendingOrder("createdAt");

        query2.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(final List<ParseObject> objects, ParseException e) {

                if (e == null) {

                    for ( final ParseObject object : objects) {



                        holder.feedUpVoteButton.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                                int pos = (Integer) v.getTag();
                                parseObFeed = objects.get(pos);
                                username = parseObFeed.getString("username");
                                createdAt = parseObFeed.getDate("createdAt");

                                likes[pos] += 1;                           
                                parseObFeed.put("likes", likes[pos]);
                                holder.feedNumOfLikes.setText(String.valueOf(parseObFeed.getInt("likes")));

                                parseObFeed.put(ParseUser.getCurrentUser().getUsername() + "upvoteClicked", true);

                                parseObFeed.saveInBackground();
                            }
                        });                

            }
        });


        return view;
    }


    private class ViewHolder {

        ImageView feedProfilePic;
        TextView feedUsername;
        TextView feedNumOfLikes;
        TextView feedFeedItem;
        TextView feedDate;
        TextView feedNumofReplies;
        Button feedUpVoteButton;
        Button feedDownVoteButton;
        Button feedCommentButton;
        ListView feedListView;

    }

}

实际上这就是整个理论。当您增加一个值时。您必须从获取数据的位置增加列表中的该值。因为当您向下滚动时,上面的行将丢失。当您向后滚动时,列表将从列表值中再次加载。因此您所要做的就是增加列表中的值,即GlobalFeedTab.arrayFeedList this 链接提供更多详细信息,适合任何寻找更多详细信息的人 当你写下这一行时

likes[pos] += 1;

您还必须增加您的 arraylist(mFeed) 中的值,然后编写 notificationDataSetChanged();

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

在基本适配器中滚动后,TextView 值更改回之前的值 的相关文章

  • 如何做Android - 滑动抽屉从左到右滑动..?

    如何将android滑动抽屉从LTR滑动 使用时android orientation horizontal 它从 RTL 滑出 我该如何进行 LTR 谢谢 我找到了答案表格 Here http blog sephiroth it 2011
  • 设置文本视图 Android 的文本颜色

    在 string xml 文件中我使用以下标签
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • ExoPlayer2 - 如何使 HTTP 301 重定向工作?

    我开始使用 ExoPlayer 来传输一些音频 一切都很顺利 直到我遇到一个带有 301 永久移动 重定向的 URL ExoPlayer2 默认情况下不处理该问题 我已经看过这个线程 https github com google ExoP
  • 当它的父级是 ConstraintLayout 时设计 CardView 吗?

    我在编辑包含Relativelayout的Cardview内的RelativeLayout时搞砸了 ConstraintLayout会将相对布局的wrap content更改为0并添加工具 layout editor absoluteX 1
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • 如何检查 Android 中的同步设置

    我正在构建一个 Android 应用程序 我需要检查设备中注册的每个单独帐户的同步设置 我知道我可以通过 ContentResolver 类来做到这一点 但我遇到了一些问题 我已设法获取设备上所有帐户的列表 但我不知道在运行时从哪里获取特定
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始
  • Android 后台倒计时器

    我有一个 Android 应用程序 它管理一个倒计时器 类 CountDownTimer 它显示在应用程序屏幕中 以显示到达 00 00 还剩多少时间 我现在的问题是 当我按主页按钮或启动另一个应用程序时 应用程序 计时器不会在后台运行 所
  • Android 屏幕方向错误

    我使用的是 Android HTC HERO 2 1 版本 我写的活动

随机推荐

  • 在 Oracle SQL 中使用复杂 IF 语句

    您好 我正在尝试在 Band 属性中编写 If 语句 但没有成功 T T 我想做的是根据所有者类别 棚屋和供水属性设置单个角色 A B C D 任何帮助都会很棒 CREATE TABLE Rent Band Plot ID NUMBER 3
  • 从字符串列表中提取每个单词

    我正在使用Python 我的清单是 str Hello dude What is your name My name is Chetan 我想将字符串中每个句子中的每个单词分开并将其存储在new list中 new list 会像 new
  • 通过“this”与“prototype”分配函数有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Javascript 中使用 prototype 与 this 我对这两种向函数添加方法的类型感到困惑 让我用一个例子来解释一下 var foo function this bar functio
  • ConvertTo 函数中 Mat 的内存泄漏

    我在管理函数中的内存时遇到一些问题 Valgrid 说我在转换函数后出现内存泄漏 难道是因为数据没有正常发布 我尝试使用临时指针 但我的程序崩溃或无法正常工作 以前有人遇到过这个问题吗 this gt images push back ne
  • css“[class*=my-class].my-subclass”在做什么?

    我继承了一些 css 并且在网上到处搜索以了解 css 块所表达的内容 如下所示 class wrapper logo padding top 32px important 星号和方括号的作用是什么 在谷歌上搜索 和 很困难 如果这个问题很
  • Java Map 的递归迭代

    我正在编写一个递归函数 其目的是迭代 pList 文件 我的代码是 public static void HashMapper Map lhm1 throws ParseException Set set jsonObject keySet
  • 如何恢复隐藏的未提交的更改

    我的开发分支中有一些未提交的更改 我使用git stash 但在那些隐藏的变化中 有一些非常重要的变化 有什么办法可以恢复这些更改吗 另外 从那以后我对隐藏的代码文件进行了一些更改 如果可能的话 我是否有机会检索新分支中隐藏的更改 这个简单
  • Swift 3:泛型中 TapGestureRecognizer 内的委托不会被调用

    我有一个像这样的协议 public protocol SubmitAgeDelegate class func changeSubmitButtonBool 问题是我想在泛型类中调用它 open class GenericControlle
  • 当悬停图像时,其余图像会更改过滤器

    我有 10 张图像 当我将鼠标悬停在其中一张时 我希望剩下的 9 张图像可以更改过滤器 这就是我所拥有的 CSS posts wrapper hover posts webkit filter blur 10px jQuery docume
  • Android,静音模式通知

    在我的 Android 应用程序中 我需要知道 每当用户处于电话选项模式 按住电源按钮一段时间时出现的模式 并按下 静音模式 按钮时 我发现飞行模式与ACTION AIRPLANE MODE CHANGED 但我找不到 静音模式 按钮的任何
  • 翻译为 DCG Semicontext 不起作用 - 继续

    作为对此的后续行动question这提出了问题 返回列表中项目的计数 但如果两个相同的项目彼此相邻 则不增加计数 这段代码是我用 DCG 和半上下文解决这个问题的最接近的代码 lookahead C C gt C empty list No
  • 自动完成文本视图还是搜索对话框?

    我需要做的只是可以单击关键字的建议并将用户带到界面 xml 布局 例如下面的结果 存在 丰富 缺乏 我在 R layout abide 中创建了它们 Though AutoCompleteTextView看起来没那么麻烦 但是可以做到吗 或
  • 规则已被弃用,取而代之的是什么呢(TSQL)?

    规则 Transact SQL 1 是可重用的 从而克服了检查约束不可重用的缺点 现在我读到 1 此功能将在 Microsoft SQL Server 的未来版本中删除 避免在新的开发工作中使用此功能 并计划修改当前使用此功能的应用程序 我
  • 在地图中绘制半径为定义距离的圆

    我能够绘制地图并为特定点添加标题 library maps map state text 80 83 35 19 Charlotte cex 6 我还可以绘制一个以该点为中心的圆 symbols 80 83 35 19 circles 2
  • 如何从 HTML 页面获取 Javascript 变量?

    在互联网页面的源代码中 有一个包含 JSON 数据的 Javascript 变量 我想将其存储在 PHP 程序的变量中 知道如何做吗 该文件位于公共 html 链接上 如下所示 感谢您的时间和答复 您使用 互联网上的页面 和 公共 这两个词
  • 如何以编程方式知道它是Android中的平板电脑还是手机? [复制]

    这个问题在这里已经有答案了 我想检测给定的设备是 Android 中的平板电脑还是手机 我已经在模拟器中尝试过这两个 但没有成功 两者都在这里 First if getResources getConfiguration screenLay
  • 如何在 TextArea 上使用 TAB/Enter KeyPressed,并在不使用内部 API 的情况下替换为 focustraversal 或 Enter 键?

    我需要一个可以自动换行 添加滚动条等的控件 但忽略回车键并使用 tab shift 选项卡跳转到下一个控件 我似乎无法弄清楚这一点 这是我做的控件 看起来只是简单的停留在文本区域 这是从网上的一个旧示例中使用的 似乎只有当 textArea
  • JAX-RS / Jersey 中可变参数数组的路径段序列?

    JAX RS Jersey 允许使用以下方法将 URL 路径元素转换为 Java 方法参数 PathParam注释 有没有办法将未知数量的路径元素转换为 vararg Java 方法的参数 I e foo bar x y z应该转到方法 f
  • 选定的表行 angular.js

    我有一张桌子ng class像这样的指令 tbody tr class clickable row td firm fileName td td firm extracted td td firm vulnScore td td fir t
  • 在基本适配器中滚动后,TextView 值更改回之前的值

    我一直在研究这个问题 但找不到解决方案 关于我的自定义列表视图的所有内容似乎都运行正常 当我点击holder feedUpVoteButton 文本发生变化 1正确 但是 当我向下滚动并向上滚动时 文本值将恢复为单击之前的值 我拒绝使用no