2013-01-31 51 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布局PARAM,这就是为什么有观点不显示。

+0

但使用权当它是你的宽度设置为需要0.否则重量将无济于事。我尝试了LinearLayout.LayoutParams.WRAP_CONTENT,但结果仍然相同。 – user2029070

+0

我通过将LinearLayout更改为TableRow来解决此问题。 – user2029070

相关问题