2016-10-03 31 views
0

私のアプリには、 "\ n"で区切られたバーコードを含む大きなEditTextフィールドがあります。バーコードをこのEditTextフィールドにプログラムで(スキャンアクティビティから返されるonActivityResultで)または手動で追加することができます。編集テキストリスト編集

ランダム例:

010566510415 
40541651654556 
561516551588 
0043211652 
003789453 

私は、これらのバーコードのそれぞれは、そのバーコードの種類をローカルに保存する必要があります。

ランダム例:

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

Iが使用スキャニングライブラリはスキャン上のバーコードのタイプを識別するので、私は、それぞれのバーコードタイプでスキャンしたバーコードを保存するオブジェクトのArrayListのを持っています。

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

私がいる問題は、ユーザーが手動でバーコードを編集EDITTEXT、と同期してArrayList<BarcodeObject>を保っています。

私はこれをどのように達成する必要がありますか?

編集1:ありがとうございました。 1つの問題は、ユーザーが変更しているバーコードがわからないことです。私はnumbersList.getSelectionStart();を使ってカーソルをどこかを見つけ出し、正しいバーコードを識別するために最も近い "\ n"を探して解決しました(すべてのバーコードは "\ n"の間にあります)。しかし、ユーザーが1つ以上のバーコードをクリックして変更するとどうなりますか?私はちょうどそれらを同期させておく方法を知らない。

+0

あなたの編集テキストにTextWatcherを保存し、ユーザーによって何かが変更された場合は既存のarraylistで検索してみてください – Jai

答えて

0

あなたは、インデックス、例のベースの配列リスト更新することができます。

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

をして、更新対象のために、あなたのBarcodeObjectクラスにゲッターとセッターを追加します。あなたが唯一のEditTextを持っていて、ユーザーストップタイピング後にデータを保存したいと仮定すると、

0

...

あなたはafterTextChanged()、beforeTextChangedを(TextWatcherでクラスを拡張し、をオーバーライドする必要が)onTextChanged()。 必要な機能を実現するには、afterTextChanged()メソッドで必要なロジックを記述する必要があります。すでにbcodesをinitilizedていると仮定すると、次のコードを書くことができ、それがうまく動作します)あなたのafterTextChanged(で、意味

..

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

...

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

・ホープ助けになる。乾杯!