2013-09-28 178 views
0

有一行包含14個edittext.have兩個按鈕用於添加和刪除行動態。多數民衆贊成我可以做到這一點,我的問題是每當我添加一行,所有行的edittext具有相同的id和name。所以我的問題是。 1.如何在添加按鈕單擊時更改edittext的名稱和ID。 2.添加如何將多行的值存儲到數據庫中。 enter image description here 我的代碼..
row.xml動態添加行添加存儲該值到數據庫

<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"     
      android:background="@drawable/table_back"  
      android:layout_gravity="center_vertical" > 

     <EditText 
       android:id="@+id/req" 
       android:layout_width="85dp" 
       android:layout_height="wrap_content"      
       android:background="#00000000"> 
       <requestFocus /> 
     </EditText> 

     <EditText 
       android:id="@+id/fm" 
       android:layout_width="82dp" 
       android:layout_height="wrap_content" 
       android:inputType="text" 
       android:background="#00000000" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/effects" 
       android:layout_width="82dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/sev" 
       android:layout_width="30dp" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="10dp" 
       android:inputType="text" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/causes" 
       android:layout_width="82dp" 
       android:layout_height="wrap_content" 
       android:inputType="text" 
       android:background="#00000000" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/occ" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="7dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/process" 
       android:layout_width="85dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/det" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="3dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/rpn" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="5dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/recommended" 
       android:layout_width="82dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="2dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/sev2" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="3dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/occ2" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="8dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/det2" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="3dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/new_rpn" 
       android:layout_width="35dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:layout_marginRight="6dp" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/resp" 
       android:layout_width="85dp" 
       android:inputType="text" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:ems="10" /> 
     <EditText 
       android:id="@+id/target_date" 
       android:layout_width="40dp" 
       android:inputType="date" 
       android:layout_height="wrap_content" 
       android:background="#00000000" 
       android:ems="10" /> 

Create.class

protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.create_fmea_2); 

      mContainerView = (LinearLayout) findViewById(R.id.parentView); 
      mAddButton = (ImageButton) findViewById(R.id.btnAddNewItem); 
      mDeleteButton=(ImageButton)findViewById(R.id.btnDelete); 

      // Add some examples 
      inflateEditRow(count); 
    } 
      public void onAddNewClicked(View v) { 


count++; 
    inflateEditRow(count);  
    v.setVisibility(View.VISIBLE); 
// System.out.println("value of count "+count); 
} 

    public void onDeleteClicked(View v) { 
     // remove the row by calling the getParent on button 
    // mContainerView.removeView((View) v.getParent()); 



       int del=count; 
       if(del-->=1){ 
       mContainerView.removeViewAt(del); 
       count--; 

     } 
     else{ 
      Toast.makeText(getApplicationContext(), "Add row to delete", Toast.LENGTH_SHORT).show(); 
     } 
       } 

private void inflateEditRow(int id) { 
     alleds=new ArrayList<EditText>(); 
     int et_id=1; 

     for(int i=1;i<=id;){ 


     // System.out.println("value of i "+i); 
      LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       rowView = inflater.inflate(R.layout.row1, null); 


      rowView.setId(count); 
      i++;   

     }  

在此先感謝。

+0

在這裏,請閱讀SQLite。 www.vogella.com/articles/AndroidSQLite/article.html – Razgriz

+0

@Razgriz感謝您的答覆。但我需要一次插入多行。我知道如何將單行插入到數據庫中。 –

+0

@sunil_patidar你能告訴我,你有沒有找到你的問題的解決方案?如果是的話,你可以把代碼?謝謝 –

回答

0

單列:

把你所有的EditText對象的列表。

當你想存儲數據只是迭代它們。

for (EditText et: editTextList) { 
    addSingleRow(et.getText().toString() ; 
} 

使用這個並不重要他們有什麼id或名稱。

多行:

Map<Integer, List<EditText>> editTextRows = new TreeMap<Integer, List<EditText>>(); 

for (Integer row: editTextRows.keySet()) { 

    List<EditText> editTextList = editTextRows.get(row); 

    for (EditText et: editTextList) { 
     addSingleRow(et.getText().toString() ; 
    } 
} 

爲什麼TreeMap中你可能會問。它具有很好的功能,它可以對鍵進行排序,以便在迭代它們時獲得行。

+0

謝謝,我認爲它適用於單一的,如何處理多行 –

+0

沒問題。更新了答案。 – cYrixmorten

+0

謝謝。我會盡力確保.... –