2016-10-03 6 views
0

В моем приложении есть большое поле EditText, которое содержит штрих-коды, разделенные «\ n». Штрих-коды могут быть добавлены в это поле EditText либо программно (в onActivityResult, возвращаемом из действия сканирования), либо вручную.Редактирование списка редакторов

Случайный пример:

010566510415 
40541651654556 
561516551588 
0043211652 
003789453 

мне нужно каждый из этих штриховых кодов должны быть сохранены локально с их типом штрих-кода.

Случайный пример:

- Code128 (scanned) 
561516551588 - Custom (manually inputted) 
xx - 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»). Но что происходит, если пользователь щелкает, выбирает более одного штрих-кода и меняет их. Я просто не знаю, как синхронизировать их.

+0

Сохраните TextWatcher на своем edittext и попробуйте выполнить поиск с существующим arraylist, если что-то изменилось пользователем – Jai

ответ

0

вы можете обновить список массива на основе индекса, например:

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

и добавить геттер и сеттер в классе BarcodeObject, для обновления объекта;

0

Предполагая, что у вас есть только EditText, и вы хотите, чтобы сохранить данные после остановки пользователь, набрав ...

Вы должны расширить класс с TextWatcher и переопределить afterTextChanged(), beforeTextChanged() , onTextChanged(). Вы должны написать свою логику в методе afterTextChanged(), чтобы достичь необходимой вам функциональности.

Это означает, что в вашем afterTextChanged(), вы можете написать следующий код и он будет работать хорошо ..

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

Предполагая, что вы уже initilized bcodes ...

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

Надежда помогает. Ура!

 Смежные вопросы

  • Нет связанных вопросов^_^