2017-06-27 3 views
0

Ich habe dynamische EditText-Boxen und Spinner auf Hinzufügen-Schaltfläche erstellt, aber ich weiß nicht, wie Sie Daten von ihnen abrufen. The whole code is available on this website.Abrufen von Daten aus dynamisch erstellten EditBox in Android

public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      parentLinearLayout = (LinearLayout) findViewById(R.id.parent_linear_layout); 
      mText=(EditText) findViewById(R.id.number_edit_text); 


     } 
     public void onAddField(View v) { 
      LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View rowView = inflater.inflate(R.layout.field, null); 

      // Add the new row before the add field button. 
      parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1); 
      parentLinearLayout.getChildAt(counter); 
     } 

     public void onDelete(View v) { 
      parentLinearLayout.removeView((View) v.getParent()); 
     } 

Antwort

1

Versuchen Sie, diese anrufen müssen, um bekommen, können Sie einfach Schleife erstellen und alle Daten erhalten, die dynamisch hinzugefügt haben, wie folgt aus:

ändern Ihr Layout activity_main.xml, weil sie in der Demo falschen Code für das Layout erstellt haben.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="5dp" 
    android:orientation="vertical" > 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/parent_linear_layout" 
     android:orientation="vertical" 
     > 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" > 
     <EditText 
      android:id="@+id/number_edit_text" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="5" 
      android:inputType="phone"/> 
     <Spinner 
      android:id="@+id/type_spinner" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="3" 
      android:entries="@array/types" 
      android:gravity="right" /> 
     <Button 
      android:id="@+id/delete_button" 
      android:layout_width="0dp" 
      android:layout_height="40dp" 
      android:layout_weight="1" 
      android:background="@android:drawable/ic_delete" 
      android:onClick="onDelete"/> 
    </LinearLayout> 
    </LinearLayout> 
    <Button 
     android:id="@+id/add_field_button" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="5dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:background="#555" 
     android:layout_gravity="center" 
     android:onClick="onAddField" 
     android:textColor="#FFF" 
     android:text="Add Field" 
     android:paddingLeft="5dp"/> 

    <TextView android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="" 
     android:id="@+id/result"/> 
</LinearLayout> 

-Code für alle Werte bearbeiten Text bekommen:

int count = parentLinearLayout.getChildCount(); 

for(int i=0; i<count; i++) { 
    LinearLayout linearLayout = (LinearLayout)parentLinearLayout.getChildAt(i); 
    EditText editText = (EditText)linearLayout.getChildAt(0); 
    String result = editText.getText().toString(); 
    //You can result get data from edit text. 
} 

Für Spinner Wert:

int count = parentLinearLayout.getChildCount(); 

    for(int i=0; i<count; i++) { 
     LinearLayout linearLayout = (LinearLayout)parentLinearLayout.getChildAt(i); 
     Spinner spinnerField = (Spinner)linearLayout.getChildAt(1); 
     String result = spinnerField.getSelectedItem().toString(); 
     //You can result get data from spinner value. 
    } 
+0

v.getText() wirft Fehler kann Methode nicht lösen genannt –

+0

Was Fehler ist, ist Null-Zeiger oder etwas anderes –

+0

getText-Methode wird nicht von v Objekt –

0
mText=(EditText) view.findViewById(R.id.number_edit_text); 

diese Methode in onAddField Put.

Wenn Sie den Text aus dem EditExt Sie

mText.getText().toString() 
Verwandte Themen