在我的应用中,有一个较大的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;之间)。但是,如果用户单击选择多个条形码并更改它们会发生什么。我只是不知道如何让它们保持同步。
答案 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>();
希望它有所帮助。干杯!