2013-05-22 16 views
7

Poniższy fragment kodu nadyma ten sam widok 20 razy. Ponieważ pompowanie jest kosztowne. Chcę nadmuchać go tylko jeden i użyć tego samego widoku dla 20 elementów, chcę tylko zmienić widoczne dane w interfejsie użytkownika.użyj ponownie nadmuchanego widoku w Androidzie

LinearLayout ll = new LinearLayout(context); 
for (int i = 0; i < 20; ++i) { 
    View itemView = inflater.inflate(getLayoutId(), parent, false); 
    itemView.setText(data.getName(i); 
    ll.add(itemView); 
} 

Chcę czegoś takiego.

LinearLayout ll = new LinearLayout(context); 
View itemView = inflater.inflate(getLayoutId(), parent, false); 
for (int i = 0; i < 20; ++i) { 
    itemView.setText(data.getName(i); 
    ll.add(itemView); 
} 

Ale nie jestem w stanie użyć itemView obj w ten sposób.

Czy ktoś może mi powiedzieć, jak korzystać z widoku wiele razy po nadmuchaniu.

+0

jeśli masz tylko TextView w układzie następnie można utworzyć TextView programowo –

+0

tworzysz 20 różnych widoki z tego samego xml. Nie można wykonać mniej niż 20 wyświetleń, jeśli potrzebujesz 20 widoków. –

+0

textview, który dałem dla przykładu, mam kilka więcej widoków. –

Odpowiedz

0

Nie możesz tego zrobić. Jeśli uważasz, że jest to kosztowne, znajdź inny sposób tworzenia układu.

Ale weź pod uwagę gridViews. Tworzą mnóstwo widoków i pokazują je, a to działa świetnie.

Nie można dodać tego samego obiektu widoku 2 razy do układu. Każdy obiekt ma swój własny stan, który w twoim przypadku w pewnym sensie mówi, że będziesz dzielił stan pomiędzy wszystkimi swoimi 20 widokami, co nie ma sensu robić, co oznacza, że ​​zmiana tekstu na jednym tekstie zmieni go na resztę.

Po prostu wypełnij 20 osobnych widoków i wypełnij je odpowiednio.

Należy również rozważyć użycie ListView lub GridView, jeśli rzeczywiście masz ten sam widok, może on oferować pewne przydatne funkcje, takie jak przeglądanie widoku.

-1

Należy użyć ViewHolder patern:

http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder

powinien zrobić wszystko chcesz

+0

Chcę dodać 20 widoków do widoku przewijania horyzontalnego. Widok listy ma adapter, który zapewni widok konwertowalnego wielokrotnego użytku. Czy widok przewijania w poziomie ma również dowolny adapter, który dostarczy dane. –

+0

Viewholder nie wyświetla widoków klonowanych. Utwórz kod do sklonowania widoku przed dodaniem do układu –

+0

viewholder to po prostu wzór do pracy z ListView, oryginalne pytanie sugeruje, że ListView nie jest opcją –

Powiązane problemy