0

EditText を動的に作成しています。列「IMPORTO_FATTURA」SQLite テーブルに値を入力する必要があります。しかし、すべての値に対して新しいレコードを作成する必要があります....どうすればよいですか? これまでに作成したコードです。

ContentValues cv = new ContentValues();
cv.put(FattureTable.NOME_FORNITORE, spinnerFornitori.getSelectedItem().toString());
if(lineare instanceof ViewGroup) {
    for(int i=0; i<((ViewGroup)lineare).getChildCount(); i++) {
        View nextChild = ((ViewGroup)lineare).getChildAt(i);
        if(nextChild instanceof LinearLayout) {
            View child = ((LinearLayout)nextChild).getChildAt(0);
            if(child instanceof EditText) {
                EditText et = (EditText)child;
                String value = et.getText().toString();                            
                cv.put(FattureTable.IMPORTO_FATTURA, value);                               
            }
        }
     }
}
 cv.put(FattureTable.IMPORTO_FATTURA, Importo.getText().toString());
....
....
4

2 に答える 2

1

EditText複数の値とは、複数のフィールドからのテキストを意味するのか、1 つのフィールドを複数の結果に分割することを意味するのかわかりません。両方を行う方法は次のとおりです。

複数の編集テキスト ここでの基本的な考え方は、ループを使用することです。固定数の編集テキストを使用している場合、プロセスは簡単になりますが、それほど違いはありません。1 つのケースでは、すべての既知のコンテンツを含むArrayor List(または hey ) のコンテンツをループし、別のケースでは、コンテナー ビューのコンテンツをループします。例えばArrayListEditText

ArrayList<String> textFieldEntries = new ArrayList<String>();
textFieldEntries.put(editText1.getText().toString));
//add all values to this array . . .

databaseHandler.addValues(textFieldEntries);

databaseHandler は、データベースと実際に対話するクラスです (この方法で行う必要はありませんが、よりクリーンです)。メソッドaddEntryは次のようになります

public void addEntry(ArrayList<String> entries){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();

    for(String text : entries){
        cv.put(key, text);
    }
    db.insert(TABLE, null, cv);
}

基本的な考え方は、最初に追加したいものをすべて収集してから、そのコレクションのコンテンツをループし、それらの値をコンテンツ値に追加してから、コンテンツのチャンク全体を一度に挿入することです。

1 つのビューの多くの値

分割する必要がある文字列エントリを持つ 1 つのビューがある場合、アイデアは上記と同じですがsplit、文字列で使用し、設定された文字 (スペースの場合もあります) に基づいて分割します。これにより、上記と同じ方法でループできる文字列配列が得られます。

分割がより複雑な場合は、必要なものの配列を返す独自のトークナイザー クラスをいつでも作成できます。

于 2013-10-22T17:54:30.587 に答える
-1

SQLite のコンパイル済みステートメントを確認してください。

于 2013-10-22T17:41:49.837 に答える