2013-10-03 23 views
1

(解決) - 刪除佈局每個視圖PARAMS ---如何在Android的EditTexts中添加表格中的項目?

我是新來的Android,我想從我的文本字段中輸入的項目在TableLayout添加行。

(編者)這是我對該片段佈局:

<?xml version="1.0" encoding="utf-8"?> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:tag="contacts"> 

    <LinearLayout android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="vertical"> 

     <EditText 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="textPersonName" 
      android:ems="10" 
      android:id="@+id/contactName" 
      android:hint="Name" 
      android:paddingTop="5dip" /> 

     <EditText 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:id="@+id/contactRelationship" 
      android:hint="Relationship" 
      android:paddingTop="5dip" /> 

     <EditText 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="textPostalAddress" 
      android:ems="10" 
      android:id="@+id/contactAddress" 
      android:hint="Address" 
      android:paddingTop="5dip" /> 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="phone" 
       android:ems="10" 
       android:id="@+id/contactPhoneNo" 
       android:hint="Phone Number" 
       android:paddingTop="5dip" /> 

      <Spinner 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/contactPhoneTypeSpinner" 
       android:layout_toEndOf="@+id/contactPhoneNo" 
       android:layout_toRightOf="@+id/contactPhoneNo" 
       android:paddingTop="5dip" /> 
     </RelativeLayout> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="107dp" 
      android:inputType="textMultiLine" 
      android:ems="10" 
      android:id="@+id/contactSpecialNotes" 
      android:paddingTop="5dip" 
      android:hint="Write special notes here" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Add Contact" 
      android:id="@+id/addContact" /> 

     <TableLayout 
      android:id="@+id/contactsTableLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="5dip"></TableLayout> 
    </LinearLayout> 
</ScrollView> 

(編者)下面是這個片段的代碼:

public static class ContactsFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_section_contacts, 
       container, false); 
     return rootView; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 


     Spinner phoneTypeSpinner = (Spinner) this.getView().findViewById(R.id.contactPhoneTypeSpinner); 
     Button contactButton = (Button) this.getView().findViewById(R.id.addContact); 
     final TableLayout tableLayout = (TableLayout) this.getView().findViewById(R.id.contactsTableLayout); 
     final EditText txtContactName = (EditText) this.getView().findViewById(R.id.contactName); 
     final EditText txtContactRelationship = (EditText) this.getView().findViewById(R.id.contactRelationship); 
     final EditText txtContactAddress = (EditText) this.getView().findViewById(R.id.contactAddress); 
     final EditText txtContactPhoneNo = (EditText) this.getView().findViewById(R.id.contactPhoneNo); 
     Spinner contactPhoneTypeSpinner = (Spinner) this.getView().findViewById(R.id.contactPhoneTypeSpinner); 

     EmployeeDataSource datasource = new EmployeeDataSource(getActivity()); 
     datasource.open(); 

     //--- Gender Spinner --- 
     List<PhoneType> list = datasource.getPhoneTypeList(); 
     ArrayAdapter<PhoneType> adapter = new ArrayAdapter<PhoneType>(getActivity(), 
       android.R.layout.simple_spinner_item, list); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     phoneTypeSpinner.setAdapter(adapter); 

     phoneTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      } 

      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 

     contactButton.setOnClickListener(new View.OnClickListener() { 
      int rowId = 0; 
      @Override 
      public void onClick(View v) { 

       TableRow tableRow = new TableRow(getActivity().getApplicationContext()); 
       tableRow.setId(rowId++); 
       tableRow.setLayoutParams(new ViewGroup.LayoutParams(
         ViewGroup.LayoutParams.FILL_PARENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT)); 

       TextView tvContactName = new TextView(getActivity().getApplicationContext()); 
       tvContactName.setText(txtContactName.getText().toString()); 
       tvContactName.setLayoutParams(new ViewGroup.LayoutParams(
         ViewGroup.LayoutParams.FILL_PARENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT)); 
       tableRow.addView(tvContactName); 

       TextView tvRelationship = new TextView(getActivity().getApplicationContext()); 
       tvRelationship.setText(txtContactRelationship.getText().toString()); 
       //tvRelationship.setLayoutParams(new ViewGroup.LayoutParams(
       //  ViewGroup.LayoutParams.FILL_PARENT, 
       //  ViewGroup.LayoutParams.WRAP_CONTENT)); 
       tableRow.addView(tvRelationship); 

       TextView tvContactNo = new TextView(getActivity().getApplicationContext()); 
       tvContactNo.setText(txtContactPhoneNo.getText().toString()); 
       //tvContactNo.setLayoutParams(new ViewGroup.LayoutParams(
       //  ViewGroup.LayoutParams.FILL_PARENT, 
       //  ViewGroup.LayoutParams.WRAP_CONTENT)); 
       tableRow.addView(tvContactNo); 

       tableLayout.addView(tableRow, new TableLayout.LayoutParams(
         ViewGroup.LayoutParams.FILL_PARENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT)); 
      } 
     }); 
    } 
} 

我可以在調試器中看到,我的視圖中的值被添加到我的tableRow中,但是我沒有看到表格出現在我的屏幕中,我錯過了什麼或者做錯了什麼?

任何幫助將不勝感激。

謝謝!

+0

嘗試在提交文本值時重新加載/更新tableLayout。 – Yup

+0

在tableLayout中添加tableRow之後,我調用了tableLayout.invalidate()和tableLayout.refreshDrawableState(),但它沒有做任何事情。 (如果這是你的建議) – shifter

回答

0

我猜屏幕的高度會增加。嘗試在此佈局的頂部使用滾動查看。

+0

我的佈局上使用了ScrollView – shifter

0

我認爲你必須改變RelativeLayout財產android:height="wrap_content",而不是android:height="fill_parent"也做TableLayout

願這對你的工作......

試試這個: 編輯:

public static class ContactsFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_section_contacts, 
       container, false); 

      Spinner phoneTypeSpinner = (Spinner) rootView.findViewById(R.id.contactPhoneTypeSpinner); 
      Button contactButton = (Button) rootView.findViewById(R.id.addContact); 
      final TableLayout tableLayout = (TableLayout) rootView.findViewById(R.id.contactsTableLayout); 
      final EditText txtContactName = (EditText) rootView.findViewById(R.id.contactName); 
      final EditText txtContactRelationship = (EditText) rootView.findViewById(R.id.contactRelationship); 
      final EditText txtContactAddress = (EditText) rootView.findViewById(R.id.contactAddress); 
      final EditText txtContactPhoneNo = (EditText) rootView.findViewById(R.id.contactPhoneNo); 
      Spinner contactPhoneTypeSpinner = (Spinner) rootView.findViewById(R.id.contactPhoneTypeSpinner); 

      EmployeeDataSource datasource = new EmployeeDataSource(getActivity()); 
      datasource.open(); 

      //--- Gender Spinner --- 
      List<PhoneType> list = datasource.getPhoneTypeList(); 
      ArrayAdapter<PhoneType> adapter = new ArrayAdapter<PhoneType>(getActivity(), 
        android.R.layout.simple_spinner_item, list); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      phoneTypeSpinner.setAdapter(adapter); 

      phoneTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

       } 

       public void onNothingSelected(AdapterView<?> parent) { 
       } 
      }); 

      contactButton.setOnClickListener(new View.OnClickListener() { 
       int rowId = 0; 
       @Override 
       public void onClick(View v) { 

        TableRow tableRow = new TableRow(getActivity().getApplicationContext()); 
        tableRow.setId(rowId++); 

        TextView tvContactName = new TextView(getActivity().getApplicationContext()); 
        tvContactName.setText(txtContactName.getText().toString()); 

        tableRow.addView(tvContactName); 

        TextView tvRelationship = new TextView(getActivity().getApplicationContext()); 
        tvRelationship.setText(txtContactRelationship.getText().toString()); 

        tableRow.addView(tvRelationship); 

        TextView tvContactNo = new TextView(getActivity().getApplicationContext()); 
        tvContactNo.setText(txtContactPhoneNo.getText().toString()); 

        tableRow.addView(tvContactNo); 

        tableLayout.addView(tableRow, new TableLayout.LayoutParams(
          ViewGroup.LayoutParams.FILL_PARENT, 
          ViewGroup.LayoutParams.WRAP_CONTENT)); 
       } 
      }); 

      return rootView; 
     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 



     } 
    } 
+0

不幸的是,我也調整了其他佈局在我的xml中的高度,但無濟於事 – shifter

+0

我已經用新的java文件,看到這個。 –

+0

我試過你在這裏做的,但同樣的東西... – shifter

相關問題