Android: dynamiczne dodanie TextView do LinearLayout

0

Witam, posiadam kod który pobiera dane ze struktury i na ich podstawie rysuje pola. Poniżej fragment kodu

protected void onCreate(Bundle savedInstanceState) 
 {	
	super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog);
        Bundle b = getIntent().getExtras();
	id=b.getString("id");
        tabId=id.split(" ");
        int ile=Integer.parseInt(tabId[0]);
        layout=(LinearLayout)findViewById(R.id.listMenu);
        headerText=(TextView)findViewById(R.id.headerText);
       
        int x=10;
        int y=50;
                    
        for(int i=0;i<Constans.dialog.dialog.length;i++)
        {
        	String a=Constans.dialog.dialog[i].nameFunction;
        	if(Constans.dialog.dialog[i].nameFunction.equals(id))
        	{
        		for(int j=0;j<Constans.dialog.dialog[i].fields.length;j++)
        		{
			        	 switch(Constans.dialog.dialog[i].fields[j].typeField)
			        	{
				        	case EditText:
				        		EditText et = new EditText(getApplicationContext());
				        		et.setX(x);
				        		et.setY(y);
				        		et.setInputType(InputType.TYPE_CLASS_DATETIME);
				        		layout.addView(et);
				        		y+=20;
				        		break;
				        			        		
				        	case Checkbox:
				        		CheckBox chb = new CheckBox(this);
				        		break;
				        		
				        	case TextView:
				        		TextView tv = new TextView(this);
				        		tv.setX(x);
				        		tv.setY(y);
				        	 	tv.setText("Cokolwiek");
				        		tv.setTextColor(color.holo_green_light);
				        		y+=20;	    
				        		layout.addView(tv);
				        		break;
				        	
				        	default:
				        		break;
				        }
        		}

 

Problem w tym że pole EditText dodaje się do layoutu bez problemu natomiast TextView w ogóle się nie maluje. Czy coś robię źle ??

0

Cytując klasyka internetowego: "robisz to źle". Do tego typu zastosowań służy listview i expandable listview. Ogólnie jest bardzo niewiele sytuacji, w których dynamiczne dodawanie widgetów się przydaje.

Pomijam fakt, że w linearLayout pozycjonowanie według x i y nie ma zbyt wielkiego sensu.

0

Ok, już rozwiązałem problem. Utworzyłem dynamiczne ArrayList typu EditText, TextView itp. A co do dynamicznego tworzenia kontrolek to w moim przypadku jest to niezbędne gdyż mam do zaimplementowania 100 opcji menu, i tworząc do każdej opcji osobne activity mija się z celem, lepiej jest mi zrobić jedno główne i dodać komponenty na podstawie zdefiniowanej struktury.

0

W listview możesz mieć dowolną ilość różnych widoków (od tego są metody getViewTypeCount i getItemViewType). Twoje podejście jest złe z punktu widzenia pisania aplikacji na androida.

1 użytkowników online, w tym zalogowanych: 0, gości: 1