自定义 ListView 适配器。 TextChangedListener 调用错误的 EditText

2023-12-12

我有带有自定义适配器的旅行者列表,其中包含两个 EditText - edtFirstName 和 edtLastName。我希望当用户输入文本时将更改保存到列表中,并且当单击下一个按钮时将此列表发送到另一个活动。

My code:

public class TravellersAdapter extends BaseAdapter {

  private List<Traveler> itemsList;
  private LayoutInflater inflater;
  private Activity context;

  public TravellersAdapter(Activity context, List<Traveler> itemsList) {
    super();
    this.itemsList = itemsList;
    this.context = context;
    inflater = LayoutInflater.from(context);
  }

  public int getCount() { return itemsList.size();  }

  public Object getItem(int i) {  return itemsList.get(i);  }

  public View getView(final int position, View view, ViewGroup viewGroup) {
    if (view == null) {
      view = inflater.inflate(R.layout.traveller_item, null);
    }
    Traveler currentItem = (Traveler) getItem(position);

    EditText firstNameView = (EditText) view.findViewById(R.id.edtFirstName);
    firstNameView.addTextChangedListener(new TextWatcher() {

      public void afterTextChanged(Editable editable) {
        currentItem.setFirstName(editable.toString());
      }

    });

    return view;
  }
}

例如列表项目列表包含 5 个项目。当我编辑 2-4 个元素时一切正常,但是当我编辑第一个或最后一个元素时,编辑值分配给列表中的所有元素。在调试器中我看到了这个方法afterTextChanged使用不同的值调用 5 次position。 如何修复它?


in getView方法、参数position给出新创建的位置子视图,而不是单击的 childView 的位置。

使用它来获得正确的位置:

final int actual_position = myList.getPositionForView((View) v.getParent());

in onClick(View v); of the onClickListener任何视图。在你的情况下,你必须实施onTextChanged 侦听器对于该 EditText。

here:

myList是列表视图

v是您单击的视图,在本例中是父视图 (myList) 的子视图。

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

自定义 ListView 适配器。 TextChangedListener 调用错误的 EditText 的相关文章

随机推荐

  • 当微调器遮盖锚元素时,如何使用 Selenium 和 Python 单击锚元素?

    我是硒的新手 我已经尝试单击锚元素有一段时间了 我已经尝试过 css selector lint text xpath absolute xpath 但我仍然无法单击它 而是收到此错误消息 selenium common exception
  • Dropbox API 请求令牌不适用于 Python 3?

    我正在使用官方 Dropbox API 维护一个 Python 应用程序 为了要求用户让我的应用程序使用他们的 Dropbox 帐户 我使用了一个使用 DropboxSession 类的小脚本 这显然与我们可以在这篇博文 Include t
  • git merge 覆盖内容

    这是我的情况 我有两个功能分支 A 和 B 我想合并这两个分支 我做了以下事情 创建一个从 A 分支出来的新分支 C 签出新分支C run git merge B从命令行 我希望这两个分支合并 如果对相同文件的更改存在冲突 则该命令应引发合
  • Mongoose删除文档中的数组元素并保存

    我的模型文档中有一个数组 我想根据我提供的密钥删除该数组中的元素 然后更新 MongoDB 这可能吗 这是我的尝试 var mongoose require mongoose Schema mongoose Schema var favor
  • 如何确保链接的默认操作始终处于禁用状态?

    我正在开发一个项目 其中使用大量 ajax 调用来使站点交互更加优雅 我一直在使用的过程是获得脚本的链接 该脚本执行作为链接标记中的 href 存储的适当操作 然后 我使用 jquery 定位该元素并禁用默认操作并执行 ajax 调用 问题
  • Eclipse 中 Scanf 在 printf 之前执行

    我有以下简单的C语言代码 include
  • 在promise then mehod中返回Promise对象时的执行顺序[重复]

    这个问题在这里已经有答案了 代码是 Promise resolve then gt console log 0 return Promise resolve 4 then res gt console log res Promise res
  • 循环组合框 VBA

    我陷入了无法找到正确语法的困境 我正在处理的代码如下所示 Public Function Initializecolors initialize the colors by setting them with the help of the
  • 如何强制将重置推送到远程存储库?

    我们的远程主分支不知何故搞砸了 当前的开发代码与最新的提交一起位于主分支上 显然 开发代码还没有准备好用于主分支 因此 在我的本地存储库中 我重置了最新标签 git reset hard Tag 主分支现在在我的本地存储库上是正确的 现在
  • 以另一种形式访问类的同一实例

    我确信这是一个简单的问题 但我没有足够的经验来知道答案 DataClass Form1 Form2 我有公开课DataClass 在一个单独的文件中 DataClass vb In DataClass我需要访问的数据存储在多个数组中 我有方
  • 在 matplotlib 中绘制大量点和边

    我有一些这种格式的点 大约 3000 和边 大约 6000 points numpy array 1 2 4 5 2 7 3 9 9 2 edges numpy array 0 1 3 4 3 2 2 4 其中边是点的索引 因此每条边的开始
  • 自定义 Bash 提示符正在覆盖自身

    我正在使用自定义 bash 提示符来显示 git 分支 一切都在 etc bash bashrc function formattedGitBranch branch git branch 2 gt dev null sed e s d e
  • 选择每年的最佳记录

    我正在尝试回顾我的 sql 技能 现在我正在尝试在 Northwinddb 上运行一个简单的查询来向我显示每年的顶级客户 但是一旦我使用 TOP 函数 无论我在什么情况下 都只会显示 1 条记录分区依据 这是我的 T SQL 代码 SELE
  • ARM 中的 WFE 指令处理

    WFE 指令如何运作 我读到的是 它使处理器等待 IRQ FIQ event 但是 当您获得 IRQ 时会发生什么 irq fault handler 向量是否在获得中断或执行 WFE 之后的指令时执行 WFE 在概念上等同于 while
  • Firefox 滚动顶部问题

    我对 Firefox 的scrollTop 值和onscroll 事件有疑问 这在 IE Safari 和 Chrome 中效果很好 但 Firefox 似乎滞后 我尝试使用onscroll事件更新一些背景位置 但是当我拿起手柄并快速上下拖
  • ubuntu 16 上的 bash:set -e 不在子 shell 内继承

    当我运行这个命令时 set e echo echo I get himBH作为输出 我期待着这封信e包含在输出中 这是怎么回事 我使用的是 Ubuntu 16 04 1 LTS GNU bash 版本 4 3 46 1 release x8
  • 如何从 AngularJS 指令中选择动态生成的元素?

    在我的指令中 我需要选择某些 DOM 元素 其中一些元素是在 ng repeat 循环中动态生成的 如果我以直接的方式执行此操作 我将只获得静态元素 但是 如果我将选择延迟 500 毫秒 我将获得所有元素 这就是我想要的 虽然这可行 但它不
  • destroy_user_session_path 在 Rails 中触发 GET 而不是 DELETE

    我认为有以下代码 li li 它会生成以下 HTML a href users sign out Sign out a 但是 当单击该链接时 我收到以下错误 No route matches GET users sign out 我在这里做
  • 如何修复 Flask 蓝图的端点错误

    我正在用蓝图学习 Flask 我有以下代码示例 from flask import Flask render template Blueprint g bp Blueprint language name url prefix
  • 自定义 ListView 适配器。 TextChangedListener 调用错误的 EditText

    我有带有自定义适配器的旅行者列表 其中包含两个 EditText edtFirstName 和 edtLastName 我希望当用户输入文本时将更改保存到列表中 并且当单击下一个按钮时将此列表发送到另一个活动 My code public