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字段的文本还是将一个字段拆分为多个结果。以下是如何做到这两点。

多个编辑文本 这里的基本思想是只使用一个循环。如果您使用固定数量的编辑文本,则该过程会更容易,但并没有太大的不同。在一种情况下,您遍历包含 all known内容的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);
}

基本思想是首先收集您想要添加的所有内容,然后遍历该集合的内容,将这些值添加到内容值,然后一次插入整个内容块。

一视图多值

如果您有一个视图具有需要划分的字符串条目,则该想法与上面的想法相同,只是您将split在字符串上使用并根据设置的字符(可能是空格)进行划分。这将为您提供一个字符串数组,然后您可以以与上述相同的方式循环该数组。

如果拆分涉及更多,您始终可以创建自己的标记器类,该类将返回您想要的任何内容的数组。

于 2013-10-22T17:54:30.587 回答
-1

查看 SQLite 编译语句;

于 2013-10-22T17:41:49.837 回答