【问题标题】:EditText in ListView using ArrayAdapterListView 中的 EditText 使用 ArrayAdapter
【发布时间】:2013-09-04 06:46:04
【问题描述】:

我有一个 ListView,它在每个 ListView 行中显示一个按钮和一个 EditText。

我在我的 ArrayAdapter 中使用 ViewHolder 模式,因此所有按钮共享一个 OnClickListener。拿起按钮点击很容易,因为我的 OnClickListener 中的 onClick(View view) 为我提供了视图(我使用 getTag() 来获取我的模型对象)。

我不知道如何使用单个 TextWatcher 来获取更改的文本,因为 TextWatcher onTextChanged() 回调中没有 view 参数。任何帮助表示赞赏!

【问题讨论】:

  • 你能把代码粘贴一下,我可以建议你需要改变的地方
  • 对于所有你想创建单个 textWatcher 的 EditText

标签: android listview android-arrayadapter


【解决方案1】:

诀窍是创建一个通用的 TextWatcher 类。然后,您创建的每个实例都应该被传递一个 View 的引用,它将被放入其中。

示例:https://stackoverflow.com/a/6172024/560600

【讨论】:

  • 谢谢 - 正是我所追求的。由于痛苦焦点问题stackoverflow.com/questions/2679948/… (正如乔所说“只是不是惯用的Android UI 设计”),我最终放弃了ListView 中的EditText。现在,一个对话框就足够了,我稍后再回过头来!
  • 是的!我也应该记得尝试过。 ListViews 非常适合让您显示内存密集型资源列表,因为它们为您管理垃圾收集。但是,当我需要专注于元素时,我不得不使用 ScrollView。
【解决方案2】:

为了获取 EditText 的值,在按钮的监听器中我是这样工作的:

viewHolder.button.setTag(viewHolder.YourEditText);
viewHolder.button.setOnClickListener(new OnClickListener()){
    @Override
    public void onClick(View v) {
        int p = position;
        EditText edit = (EditText) v.getTag();
        String val = edit.getEditableText().toString();
       //do what you want with the value...
    }
}

positionpublic View getView(final int position, View convertView, ViewGroup parent){...

如果您需要,我可以发布整个 AdapterClass。

【讨论】:

猜你喜欢
  • 2012-12-18
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多