在我的应用程序中,有一个大的EditText字段,其中包含由"\n“分隔的条形码。可以以编程方式(在从扫描活动返回的EditText中)或手动将条形码添加到此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“之间)。但是,如果用户单击多个条形码并对其进行更改,会发生什么情况。我只是不知道如何保持它们同步。
发布于 2016-10-03 12:24:17
可以根据索引更新数组列表,例如:
private ArrayList<BarcodeObject> barcodes = new ArrayList<Object>();
barcodes.set(#indexposition#, #BarcodeObject#);并在BarcodeObject类中添加getter和setter,以更新对象;
发布于 2016-10-03 12:27:06
假设您只有一个EditText,并且希望在用户停止键入之后保存数据.
您必须用afterTextChanged(),beforeTextChanged(),onTextChanged().扩展类并覆盖TextWatcher您必须用afterTextChanged()方法编写所需的逻辑,以实现所需的功能。
这意味着,在您的afterTextChanged()中,您可以编写以下代码,并且它将很好地工作。
bcodes.set(#position#, #Barcode-Object#);假设你已经初始化了bcode..。
private ArrayList<BarcodeObject> bcodes = new ArrayList<Object>();希望能帮上忙。干杯!
https://stackoverflow.com/questions/39831330
复制相似问题