【问题标题】:Edittext list editing编辑文本列表编辑
【发布时间】:2016-10-03 12:11:19
【问题描述】:

在我的应用中有一个很大的 EditText 字段,其中包含由“\n”分隔的条形码。可以通过编程方式(在从扫描活动返回的 onActivityResult 中)或手动将条形码添加到此 EditText 字段。

随机示例:

010566510415
40541651654556
561516551588
0043211652
003789453

我需要将这些条形码中的每一个与其条形码类型一起保存在本地。

随机示例:

012315612323 - Code128 (scanned)
561516551588 - Custom (manually inputted)
0123156124xx - Code128_Custom (scanned, then edited by user!!)

我使用的扫描库在扫描时识别条形码类型,因此我有一个对象的 ArrayList,用于保存扫描的条形码及其各自的条形码类型。

public class BarcodeObject
    {
        private int _position = -1;
        private String _barcode = "";
        private String _barcodeType = "";
    }

当用户手动编辑条形码时,我遇到的问题是保持 ArrayList<BarcodeObject> 与 editText 同步。

您对我应该如何实现这一点有任何想法吗?

编辑 1: 感谢您的回答。一个问题是我不知道用户正在修改什么条形码。我设法通过使用numbersList.getSelectionStart();找出光标所在的位置,然后寻找最近的“\n”来识别正确的条形码(bcs所有条形码都在“\n”之间)来解决它。但是如果用户单击选择多个条形码并更改它们会发生什么。我只是不知道如何让它们保持同步。

【问题讨论】:

  • 将 TextWatcher 保留在您的编辑文本上,如果用户更改了某些内容,请尝试使用现有的数组列表进行搜索

标签: java android arraylist android-edittext barcode-scanner


【解决方案1】:

您可以根据索引更新数组列表,例如:

private ArrayList<BarcodeObject> barcodes = new ArrayList<Object>();
barcodes.set(#indexposition#, #BarcodeObject#);

并在您的 BarcodeObject 类中添加 getter 和 setter,以更新对象;

【讨论】:

    【解决方案2】:

    假设您只有一个 EditText,并且您想在用户停止输入后保存数据...

    您必须使用 TextWatcher 扩展类并覆盖 afterTextChanged()beforeTextChanged()onTextChanged()。 你必须在 afterTextChanged() 方法中编写你想要的逻辑来实现你需要的功能。

    也就是说,在您的 afterTextChanged() 中,您可以编写以下代码,它会运行良好..

    bcodes.set(#position#, #Barcode-Object#);
    

    假设你已经初始化了 bcodes...

    private ArrayList<BarcodeObject> bcodes = new ArrayList<Object>();
    

    希望对您有所帮助。干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多