2013-01-31 6 views
3

У меня проблема с моим Android-приложением. Я пытаюсь динамически добавить строку в TableLayout. Ситуация: Когда я нажимаю на определенную кнопку, я хочу добавить строку в TableLayout, текст внутри зависит от того, что заполняется, в некоторых EditTexts.Android - Когда строка добавлена ​​программно, она не отображается

Это часть моего XML-файл:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:stretchColumns="0,1" 
       android:id="@+id/landenTable" 
       android:layout_height="wrap_content" 
       android:layout_width="match_parent"> 
</TableLayout> 

Вот мой Rekenmodel.java файл:

public class Rekenmodel extends Activity{ 

    TableLayout landenTable; 
    Data context = Data.GetInstance(); 
    String binnenUwRegio, selectedCountry, buitenUwRegio, naar085Bedrijfsnummers, naar088Bedrijfsnummers, naar0900Servicenummers, overigeGesprekken; 
    Button b_send, b_addCountry; 
    Spinner countries; 
    EditText et_landen_aantalGesprekken, et_landen_bedrag; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.kpn_rekenmodel); 
     landenTable = (TableLayout) findViewById(R.id.landenTable); 
     countries = (Spinner) findViewById(R.id.countries); 
     et_landen_aantalGesprekken = (EditText)this.findViewById(R.id.et_landen_aantalGesprekken); 
     et_landen_bedrag = (EditText)this.findViewById(R.id.et_landen_bedrag); 
     b_addCountry = (Button)this.findViewById(R.id.addCountryButton); 
     b_addCountry.setOnClickListener(addCountryButtonListener); 
    } 

    private OnClickListener addCountryButtonListener = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      final TableRow tr = new TableRow(Rekenmodel.this); 
      TextView landKeuze = new TextView(Rekenmodel.this); 
      landKeuze.setText(countries.getSelectedItem().toString()); 
      landKeuze.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.45f)); 
      tr.addView(landKeuze); 

      Button delete = new Button(Rekenmodel.this); 
      delete.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.05f)); 
      delete.setText("Delete"); 
      delete.setTextSize(10f); 
      delete.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        landenTable.removeView(tr); 
       } 
      }); 
      tr.addView(delete); 

      TextView aantalGesprekken = new TextView(Rekenmodel.this); 
      aantalGesprekken.setText(et_landen_aantalGesprekken.getText().toString()); 
      aantalGesprekken.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.15f)); 
      tr.addView(aantalGesprekken); 

      TextView duur = new TextView(Rekenmodel.this); 
      duur.setText("Test duur"); 
      duur.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.20f)); 
      tr.addView(duur); 

      TextView bedrag = new TextView(Rekenmodel.this); 
      bedrag.setText(et_landen_bedrag.getText().toString()); 
      bedrag.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.15f)); 
      tr.addView(bedrag); 

      landenTable.addView(tr); 
     } 

    }; 
} 
+0

Все, что имеет отношение к logcat? –

+0

landenTable.invalidate()? – Simon

+0

Я решил эту проблему, применив это исправление. http://stackoverflow.com/questions/11963465/android-layoutparams-for-textview-makes-the-view-disappear-programatically – user2029070

ответ

2

вы устанавливаете ширину 0 в макете парах, поэтому вид является не отображается.

+0

Но при использовании весов это вы должны установить ширину 0. В противном случае вес не поможет. Я попытался с LinearLayout.LayoutParams.WRAP_CONTENT, но результат все тот же. – user2029070

+0

Я решил эту проблему, изменив LinearLayout на TableRow. – user2029070