如何从 RecyclerView 中的编辑文本获取数据?

2024-01-11

我有带有编辑文本的recyclerview。每行都有一个编辑文本。我在编辑文本中手动输入值,输入值后,我想在每一行中获取这些值。我想将这些值添加到主要活动中。 recyclerview 中可能有 10 到 20 行。我想获取这些编辑文本中的所有值。

这是我的适配器

public class SelectItemAdapter extends RecyclerView.Adapter<SelectItemAdapter.ItemHolder> {

    private List<String> itemsName, itemsQty, itemsPCode, itemPlant;
    private OnItemClickListener onItemClickListener;
    private LayoutInflater layoutInflater;

    public SelectItemAdapter(Context context, String[] mDataset) {
        layoutInflater = LayoutInflater.from(context);
        itemsName = new ArrayList<String>();
        itemsQty = new ArrayList<String>();
        itemsPCode = new ArrayList<String>();
        itemPlant = new ArrayList<String>();
        this.mDataset = mDataset;


    }


    @Override
    public SelectItemAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = layoutInflater.inflate(R.layout.custom_row_selected_item, parent, false);
        return new ItemHolder(itemView, this);
    }

    @Override
    public void onBindViewHolder(SelectItemAdapter.ItemHolder holder, final int position) {
        holder.setItemName(itemsName.get(position));
        holder.setItemQty(itemsQty.get(position));
        holder.setItemPCode(itemsPCode.get(position));
        holder.setItemPlant(itemPlant.get(position));

    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }


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

    public Object getItemName(int position) {
        return itemsName.get(position);
    }

    public Object getItemPCode(int position) {
        return itemsPCode.get(position);
    }

    public Object getItemPlant(int position) {
        return itemPlant.get(position);
    }


    public void setOnItemClickListener(OnItemClickListener listener) {
        onItemClickListener = listener;
    }

    public OnItemClickListener getOnItemClickListener() {
        return onItemClickListener;
    }


    public interface OnItemClickListener {
        public void onItemClick(ItemHolder item, int position);
    }

    public void add(int location, String iName, String iQty, String iPCode, String iPlant) {
        itemsName.add(location, iName);
        itemsQty.add(location, iQty);
        itemsPCode.add(location, iPCode);
        itemPlant.add(location, iPlant);
        notifyItemInserted(location);
    }

    public void remove(int location) {
        if (location >= itemsName.size())
            return;

        itemsName.remove(location);
        notifyItemRemoved(location);
    }

    public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private SelectItemAdapter parent;
        TextView textItemName, txtPCode, txtAvailableQty, txtTempQty, txtPlant;
        Button bRemove;
        EditText numPicker;

        public ItemHolder(View itemView, SelectItemAdapter parent) {
            super(itemView);
            this.parent = parent;
            textItemName = (TextView) itemView.findViewById(R.id.txtProductName);
            txtAvailableQty = (TextView) itemView.findViewById(R.id.txtAvailbleQty);
            txtPCode = (TextView) itemView.findViewById(R.id.txtPCode);
            txtPlant = (TextView) itemView.findViewById(R.id.txtPlant);
            bRemove = (Button) itemView.findViewById(R.id.bRemove);
            numPicker = (EditText) itemView.findViewById(R.id.numberPicker);
            bRemove.setOnClickListener(this);
        }

        public void setItemName(CharSequence name) {
            textItemName.setText(name);
        }

        public void setItemQty(CharSequence name) {
            txtAvailableQty.setText(name);
        }

        public void setItemPCode(CharSequence name) {
            txtPCode.setText(name);
        }

        public void setItemPlant(CharSequence name) {
            txtPlant.setText(name);
        }

        public String getQtyNumber() {
            return numPicker.getText().toString();
        }

        public CharSequence getItemName() {
            return textItemName.getText();
        }


        public CharSequence getItemPCode() {
            return txtPCode.getText();
        }

        @Override
        public void onClick(View v) {
            final OnItemClickListener listener = parent.getOnItemClickListener();
            if (listener != null) {
                listener.onItemClick(this, getPosition());
            }
        }
    }

}

这就是我试图获取价值观的方式。但它不起作用

private String getNumPicNumber(int i) {
        if (myRecyclerView.findViewHolderForLayoutPosition(i) instanceof SelectItemAdapter.ItemHolder) {
            SelectItemAdapter.ItemHolder childHolder = (SelectItemAdapter.ItemHolder) myRecyclerView.findViewHolderForLayoutPosition(i);
            numberPickerNumber = childHolder.getQtyNumber();
        }
        return numberPickerNumber;
    }

您不需要使用这么多列表,只需创建一个包含单个项目的所有数据的类,不需要按钮,只需使用文本更改侦听器即可。

示例代码

public class RetItem
{
    public String _itemName;
    public String _itemQty;
    public String _itemPcode;
    public String _itemPlant;
}

public class SelectItemAdapter extends RecyclerView.Adapter<SelectItemAdapter.ItemHolder> {

    private List<RetItem> _retData;
     public SelectItemAdapter(Context context, String[] mDataset) {
        layoutInflater = LayoutInflater.from(context);
        _retData = new ArrayList<RetItem>(mDataset.length);
        this.mDataset = mDataset;
    }

      @Override
    public void onBindViewHolder(SelectItemAdapter.ItemHolder holder, final int position) {
        holder.setItemName(itemsName.get(position));
        holder.setItemName.addTextChangedListener(new TextWatcher() {

           public void afterTextChanged(Editable s) {}

           public void beforeTextChanged(CharSequence s, int start,
             int count, int after) {
           }

           public void onTextChanged(CharSequence s, int start, int before, int count) {
             _retData.get(position)._itemName = s.toString();
           }
          });

        holder.setItemQty(itemsQty.get(position));
        holder.setItemQty.addTextChangedListener(new TextWatcher() {

           public void afterTextChanged(Editable s) {}

           public void beforeTextChanged(CharSequence s, int start,
             int count, int after) {
           }

           public void onTextChanged(CharSequence s, int start, int before, int count) {
             _retData.get(position)._itemQty = s.toString();
           }
          });

        holder.setItemPCode(itemsPCode.get(position));
        holder.setItemPCode.addTextChangedListener(new TextWatcher() {

           public void afterTextChanged(Editable s) {}

           public void beforeTextChanged(CharSequence s, int start,
             int count, int after) {
           }

           public void onTextChanged(CharSequence s, int start, int before, int count) {
             _retData.get(position)._itemPcode = s.toString();
           }
          });       
        holder.setItemPlant(itemPlant.get(position));
        holder.setItemPlant.addTextChangedListener(new TextWatcher() {

           public void afterTextChanged(Editable s) {}

           public void beforeTextChanged(CharSequence s, int start,
             int count, int after) {
           }

           public void onTextChanged(CharSequence s, int start, int before, int count) {
             _retData.get(position)._itemPlant = s.toString();
           }
          });
    }

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

如何从 RecyclerView 中的编辑文本获取数据? 的相关文章

随机推荐

  • 如何查看Tortoise HG发出的Mercurial命令?

    我有办法查看 Tortoise HG 发出了哪些 Mercurial 命令吗 例如 如果我在 Tortoise 中使用 Shelve 命令 我想看看它如何 以及是否 在幕后调用 hg shelve 在某些工具中 有一个 查看 gt 始终显示
  • GCP 实例可以使用单个网络接口的最大带宽是多少?

    我正在使用 n 个并行进程将数据上传到 Google 云存储桶 出口数据速率约为 16Gbps 仅使用 n 个进程并行从 gcp 存储桶下载数据时 入口流量约为 26Gbps 但是当我使用相同的编号同时执行上传和下载时 的进程 入口速率降低
  • Java 方法引用具有泛型参数的方法

    我正在尝试对具有在类声明中指定的通用参数的方法进行方法引用 所以我有 public interface IExecutable p void execute P parameter public class Parameter implem
  • Android - 在运行时更改片段布局

    我想在我的应用程序中实现单活动多片段设计 我计划有几个 屏幕 片段的布局 我将在代码中切换 可能添加到后台堆栈 据我了解 每个屏幕中片段的布局是使用布局对象 例如 FrameLayout 设置的 该对象充当片段的占位符 共享相同的 ID 由
  • Spring 拦截 url 模式

    Spring Security 拦截 url 模式与 path 或 path 有什么区别 我见过一些具有以下内容的 Spring 安全配置 但我不明白 与 The vs 现在框架中很常见 通常称为Apache Ant Pathing或类似的
  • 指针、引用和常量引用参数的函数调用歧义

    我想做的是 允许使用 setter 函数传递指针 引用或常量引用 class A std string p std string st public A p 0 A setS const std string s std cout lt l
  • 新版本的java可以在旧版本上运行吗? [复制]

    这个问题在这里已经有答案了 我有一个疑问 java是向后兼容还是向前兼容 另外 我们可以在具有 JDK 8 的 MAC 上运行用 JDK 11 Windows 编写的 java 字节码吗 我试图理解平台独立性的概念 简短回答 是的 这才是重
  • 是否可以在运行时获取依赖版本,包括从库本身获取依赖版本?

    背景 假设我制作了一个名为 MySdk 的 Android 库 并将其发布到 Jitpack Maven 上 SDK 的用户只需添加以下依赖项即可使用它 implementation com github my sdk MySdk 1 0
  • 使用位移位求整数平方根的最快方法是什么?

    我一直在寻找最快的方法来计算数字 整数 的平方根 整数 我在维基百科中遇到了这个解决方案 它找到一个数字的平方根 如果它是一个完美的平方 或其最接近的下完美平方的平方根 如果给定的数字不是一个完美的平方 short isqrt short
  • 将 XML 转换为 C# 对象

    我需要从这些 xml 数据中获取 OrderID
  • 如何从handlebars.js部分加载多个模板

    有没有一种简单的方法可以使用handlebars js 加载包含多个模板的部分 就像使用mustache js 和来自 jonnyreeves 的 jQuery 插件 https github com jonnyreeves jquery
  • 使用 eclipse 的 Android multidex 支持库

    使用 Eclipse 可以使用 multidex 生成 Android 项目来创建多个 dex 文件 在网上搜索我发现如何使用 gradle 来做到这一点 但没有关于使用它 没有 gradle 的 Eclipse 看起来像ADT蚂蚁任务项目
  • VB.NET WebBrowser禁用javascript

    有没有办法在 vb net 中禁用 javascript webbrowser 对我有用 Private Function TrimScript ByVal htmlDocText As String As String While htm
  • 检测 Spring Boot 应用程序时的类路径问题

    我有一个 springboot 应用程序 我正在尝试使用 bytebuddy 来检测它 我遇到了我无法理解的类路径问题 首先 以下是这方面的其他文献 https github com raphw byte buddy issues 473
  • 如何在 Coq 中切换当前目标?

    是否可以切换当前目标或子目标来在 Coq 中进行证明 例如 我有一个这样的目标 来自 eexists 1 1 s gt 0 r1 r1 s1 s r3 r3 s2 我想做的是split并首先证明正确的连接 我认为这将给出存在变量的值 s 并
  • Apache Thrift 和 ZeroMQ 之间的区别

    据我了解 Apache Thrift 和 ZeroMQ 是属于不同类别的软件 并且很难进行比较 因为这是苹果与橘子的比较 但我不知道为什么它们属于不同的类别 它们不是都用于在不同的服务之间传递数据吗 这些服务可能用不同的语言编写 也可能不是
  • QT 以普通用户身份启动程序

    我的自动更新程序需要管理员权限才能运行 因为它会修改程序文件夹中的文件 这一切都很好 但是 更新完成后我想要我的updater exe开始myApplication exe but without管理员权限 我当前用于从 updater e
  • bitbucket web:突出显示或灰显的合并提交?

    我想知道为什么在 bitbucket webui 的提交视图中 我看到一些合并提交的 M 为灰色 而其他提交则为彩色 如何设置或如何检测它们 我无法找到有关此行为的任何文档 此行为基于提交评论 它必须包含以下行 Conflicts src
  • Visual Studio regex_iterator 错误?

    我使用的是 Visual Studio 2013 我发现了一个错误 我希望有人可以确认 string foo A nB rC n r vector
  • 如何从 RecyclerView 中的编辑文本获取数据?

    我有带有编辑文本的recyclerview 每行都有一个编辑文本 我在编辑文本中手动输入值 输入值后 我想在每一行中获取这些值 我想将这些值添加到主要活动中 recyclerview 中可能有 10 到 20 行 我想获取这些编辑文本中的所