编辑文本列表编辑

时间:2016-10-03 12:11:20

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

在我的应用中,有一个较大的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();找出光标的位置来解决它,然后寻找最近的&#34; \ n&#34;以便识别正确的条形码(bcs所有条形码都在&#34; \ n&#34;之间)。但是,如果用户单击选择多个条形码并更改它们会发生什么。我只是不知道如何让它们保持同步。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

这意味着,在你的afterTextChanged()中,你可以编写以下代码,它会很好用。

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

假设你已经启动了bcodes ......

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

希望它有所帮助。干杯!