滚动RecyclerView时Cardview的数据发生变化

2024-02-16

我是一名初级 Android 开发者。我用 CardView 制作了一个应用程序,但是当我滚动 RecyclerView 时,它正在更改其内容。)

Video: http://sendvid.com/60ui8cay http://sendvid.com/60ui8cay

My code:

RecyclerViewActivity.java:

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class RecyclerViewActivity extends AppCompatActivity {

  private List<Ingredient> ingredients = new ArrayList();
  private RecyclerView rv;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.recyclerview_activity);

    rv=(RecyclerView)findViewById(R.id.rv);

    LinearLayoutManager llm = new LinearLayoutManager(this);
    rv.setLayoutManager(llm);
    rv.setHasFixedSize(true);
    initializeAdapter();

    initializeData();

  }

  private void initializeData(){
    ingredients.add(new Ingredient("Арахис очищенный", "8 грамм в чайной ложке", "23,3 грамма в столовой ложке", "175 грамм в стакане (250 мл)", R.drawable.peanut));
    ingredients.add(new Ingredient("Брусника", "", "", "140 грамм в стакане (250 мл)", R.drawable.cranberry));
    ingredients.add(new Ingredient("Варенье", "19 грамм в чайной ложке", "46,7 грамм в столовой ложке", "330 грамм в стакане (250 мл)", R.drawable.jam));
}

  private void initializeAdapter(){
    RVAdapter adapter = new RVAdapter(ingredients);
    rv.setAdapter(adapter);
  }
}

RVAdapter.java:

import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.IngredientViewHolder> {

    public static class IngredientViewHolder extends RecyclerView.ViewHolder {

        CardView cv;
        public static TextView ingredientName;
        public static TextView ingredientTeaspoon;
        public static TextView ingredientTablespoon;
        public static TextView ingredientGlass;
        public static ImageView ingredientPhoto;

        IngredientViewHolder(View itemView) {
            super(itemView);
            cv = (CardView)itemView.findViewById(R.id.cv);
            ingredientName = (TextView)itemView.findViewById(R.id.ingredient_name);
            ingredientTeaspoon = (TextView)itemView.findViewById(R.id.ingredient_teaspoon);
            ingredientTablespoon = (TextView)itemView.findViewById(R.id.ingredient_tablespoon);
            ingredientGlass = (TextView)itemView.findViewById(R.id.ingredient_glass);
            ingredientPhoto = (ImageView)itemView.findViewById(R.id.ingredient_photo);
        }
    }

    List<Ingredient> ingredients;

    RVAdapter(List<Ingredient> ingredients){
        this.ingredients = ingredients;
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {

        super.onAttachedToRecyclerView(recyclerView);
    }
    @Override
    public IngredientViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
        IngredientViewHolder ivh = new IngredientViewHolder(v);
        return ivh;
    }

    @Override
    public void onBindViewHolder(IngredientViewHolder ingredientViewHolder, int i) {
        IngredientViewHolder.ingredientName.setText(ingredients.get(i).name);
        IngredientViewHolder.ingredientTablespoon.setText(ingredients.get(i).tablespoon);
        IngredientViewHolder.ingredientTeaspoon.setText(ingredients.get(i).teaspoon);
        IngredientViewHolder.ingredientGlass.setText(ingredients.get(i).glass);
        IngredientViewHolder.ingredientPhoto.setImageResource(ingredients.get(i).photoId);
    }

    @Override
    public int getItemCount() {
        return ingredients.size();
    }
}

CardViewActivity.java:

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class CardViewActivity extends Activity {

    TextView ingredientName;
    TextView ingredientTeaspoon;
    TextView ingredientTablespoon;
    TextView ingredientGlass;
    ImageView ingredientPhoto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.cardview_activity);
        ingredientName = (TextView)findViewById(R.id.ingredient_name);
        ingredientTeaspoon = (TextView)findViewById(R.id.ingredient_teaspoon);
        ingredientTablespoon = (TextView)findViewById(R.id.ingredient_tablespoon);
        ingredientGlass = (TextView)findViewById(R.id.ingredient_glass);
        ingredientPhoto = (ImageView)findViewById(R.id.ingredient_photo);

        ingredientPhoto.setImageResource(R.drawable.salt);
    }
}

移除所有static从这个代码块:

    public static TextView ingredientName;
    public static TextView ingredientTeaspoon;
    public static TextView ingredientTablespoon;
    public static TextView ingredientGlass;
    public static ImageView ingredientPhoto;

以及期间onBindViewHolder改成:

    // with lower case `i`
    ingredientViewHolder.ingredientName.setTe ... etc

并尝试了解静态字段和非静态字段的区别。我用谷歌搜索发现:http://www.tutorial4us.com/java/java-static-and-non-static-variable http://www.tutorial4us.com/java/java-static-and-non-static-variable

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

滚动RecyclerView时Cardview的数据发生变化 的相关文章

  • Android:WebView/BaseInputConnection 中的退格键

    我在 Android 4 2 中遇到软键盘退格问题 我在 WebView CodeMirror 中有一个自定义编辑器 它使用一个空的
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 双屏 Android Studio 中不显示自动补全

    我刚刚从 Eclipse 切换到 Android Studio IntelliJ 我不明白自动补全是如何工作的 我尝试了 Control Space Control Shift Space 但没有相关建议 不在 Java 文件中 也不在布局
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • Expresso 的 Android 测试首选项片段

    我在通过 Expresso 测试我的代码时遇到问题 我写了这段代码 public class SettingsActivity extends Activity Override protected void onCreate Bundle
  • 以 HTML 格式发送电子邮件

    我想发送 HTML 格式的电子邮件 如下图所示 我怎样才能做到这一点 请帮我 提前致谢 String body new String table tr td br header td tr br br Get b Best Score b
  • TextView.setMaxLines 不起作用?

    在我的应用程序中 我有一个屏幕 其中显示一些文本 然后显示一张照片 文本的长度是可变的 有时根本没有 有时很多 所以我想对其进行设置 以便文本永远不会占用超过几行 但可以滚动 为下面的图像留下足够的空间 我这部分的视图组件是以编程方式创建的
  • Android 中 Activity 之间的 3D 动画

    How to create animation between two Activity look like As Screen shot in android 搜索jazzyviewpager 这是link https github co
  • onPrepareOptionsMenu 复制 ActionBar 中的项目

    当我使用 onPrepareOptionsMenu 添加菜单项时 该菜单项会在操作栏中复制其自身 我正在使用片段并在主要活动的 ActionBar 中创建初始菜单 如下所示 Override public boolean onCreateO
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • Android 从通知刷新 Activity

    我有一个程序 我在其中调用通知 如果您将其下拉 该通知将启动一个新活动 mNotificationManager NotificationManager getSystemService ns int icon R drawable sta
  • Android AppWidgetManager 方法 updateAppWidget 无法设置意图、加载数据。而且它是随机发生的

    我的小部件由 2 个按钮和一个显示数据的列表视图组成 大多数时候 当调用小部件提供程序的 onUpdate 方法时 一切都会正常加载 每个人都很高兴 但是我注意到有时在调用更新方法后 小部件完全无法加载其数据 列表视图为空 所有按钮均无响应
  • 带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别?

    我想知道以下两者之间的区别 MyClass class getClassLoader getResourceAsStream path to my properties and MyClass class getResourceAsStre
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据
  • 如何正确处理 ListView 内的 Android EditText 输入?

    在我的应用程序中 我有一个在 a 中添加 删除 编辑记录的活动SortedMap 该活动作为以下活动的延伸实施ListActivity 我已经实现了自定义ArrayAdapter对于收藏品 Every ListView项目 对应于基础记录
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大

随机推荐

  • Quarkus 异常处理程序

    quarkus 提供异常处理程序吗 我想要像 Spring 的 ControllerAdvice 这样的东西 https www baeldung com exception handling for rest with spring ht
  • 渲染自定义属性 KNP 菜单

    有没有办法在 KNP 菜单包中呈现自定义属性 如下所示 menu factory gt createItem Role ROLE PROGRAM EVENT PLANNER array route gt show form events a
  • 同步并发请求以共享缓慢操作的结果

    我有一个 Java UI 服务 它有一个 API 方法 该方法调用一个相对较慢的操作 比如大约 30 秒 该操作是无参数的 但它对随时间变化 相对缓慢 的外部数据进行操作 该方法返回最新结果并不重要 如果它们是 30 秒的旧结果 那就可以接
  • 如何将 PHP in_array 与关联数组一起使用?

    是否有任何php函数 例如in array 用于通过mysql函数 mysql fetch assoc 获得关联数组 例如 如果我有一个如下所示的 array array 0 gt array ID gt 1 name gt Smith 1
  • 在 HTML 与 CSS 中指定页面加载的图像尺寸

    我很久以前就从某个地方了解到 指定宽度和高度 img HTML 文档中的元素可以加快并改善页面加载体验 并且通常遵循以下做法 img src width 100 height 100 我现在面临的情况是 单个页面上有大量图像 我更喜欢通过
  • 从 Azure VM 打开活动 FTP 连接

    我正在尝试通过 Azure VM 的活动连接连接到远程 FTP 服务器 我收到的错误是 非法 PORT 命令 我使用被动连接连接到其他 FTP 站点没有问题 但此 FTP 服务器仅支持主动连接 我的问题基本上与这个问题 https serv
  • 如何使用php从周数中查找月份号、名称

    如何使用php从周数中查找月份号 名称 如果您有ISO week http en wikipedia org wiki ISO week date数字 然后获取您可以使用的月份 一周的开始 strtotime http php net st
  • 事务管理和 CDI

    我想用CDI 我通常使用Spring 开发一个应用程序来发现这项技术 我读过很多关于 CDI 的文章来了解它是如何工作的 我有一个关于事务管理的简单问题 例如数据库中的持久性 是否必须使用 EJB 3 1 来进行事务管理 或者是否可以仅使用
  • R 闪亮的数据表列用线分割

    我在闪亮的服务器中生成一个数据表 如下所示 x renderTable rownames FALSE 并有一个像这样的用户界面 tableOutput x 现在我希望每隔一列就有一个分割标记为线条 例如 a b c d e 1 2 2 3
  • 了解 XDR 规范以创建 *.x 文件

    我浏览了互联网上的几个网站 实际上想知道我们如何在规范中编写规范 x文件以生成等效函数 通常 您可以从 x 文件生成三 组 代码 消息 xdr 编码器 解码器函数 客户端存根和服务器存根 当然 您也可以手动完成 但要做到正确的工作量太大 使
  • 如何从文件名中删除文件扩展名(VBA)

    我有一个文件名变量 其中包含 Filename csv 要从我使用的路径中提取文件名 Filename Dir fStr where fStr从我选择的文件中检索 我只需要文件名而不需要 csv 我该如何删除 csv 扩大 最好使用类似的函
  • 如何使用 传递附加信息?

    我需要将文件上传到在 tomcat 上运行的 servlet 除了文件之外 我还想允许用户添加与上传的文件关联的评论 我尝试了以下方法 但没有成功
  • bluez5 中哪个工具取代了 gatttool?

    好像自从commit b1eb2c4cd057624312e0412f6c4be000f7fc3617 gatttool已被弃用 但我找不到任何信息 什么取代了 gattool 我在 gatttool 上研究过的每个 Python 蓝牙 L
  • 使用索引数据计算非结构化文档中的所有唯一单词

    我已将非结构化 HTML 文档加载到 Marklogic 中 并且 对于任何给定的文档 URI 我需要一种使用索引 词典来提供所有唯一单词的字数统计的方法 例如 假设我有以下文件 保存在 URI html example html 下 h1
  • C++ 中的可空值

    我正在用本机 C 创建数据库访问层 并且正在寻找支持 NULL 值的方法 这是我到目前为止所拥有的 class CNullValue public static CNullValue Null static CNullValue nv re
  • UITextView contentInset 在 iOS 7 上的 UITextView 中不起作用?

    我正在尝试设置一个UITextView s contentInset财产 这样做时 UIEdgeInset s top变量工作得很好 所以 self textView setContentInset UIEdgeInsetsMake 50
  • C# 中的链接属性和意外结果

    我只是快速浏览了一下本文 http blogs msdn com ricom archive 2006 09 07 745085 aspx 特别是关于为什么他选择使用结构 字段而不是类 属性 并看到这一行 属性的结果不是真正的左值 因此我们
  • 同步算法

    有什么好的同步算法参考吗 我对在多个用户之间同步以下类型数据的算法感兴趣 日历 文件 列表和大纲 我不仅仅是在寻找目录内容的同步a la rsync http en wikipedia org wiki Rsync 我有兴趣合并单个文件中的
  • 如何在 Angular2 材质表中映射动态标题和表内容

    我在带有动态表内容和标题的 Angular 材料表中遇到问题 这是我的表的 JSON 数据 let dataobj key Data1 value ENF key Data2 value 10598489700 key Data3 valu
  • 滚动RecyclerView时Cardview的数据发生变化

    我是一名初级 Android 开发者 我用 CardView 制作了一个应用程序 但是当我滚动 RecyclerView 时 它正在更改其内容 Video http sendvid com 60ui8cay http sendvid com