Pomysł na dodawanie images do scrollView

0

Witam serdecznie ! !
Program ma wyglądać tak:
ScrollView ma wyświetlać obrazki, które są poukładane na takiej zasadzie: 1 obok drugiego, gdy następny się nie mieści przeskakuje na dół, itd.
Mój pomysł:
Zrobić LinearLayout w ScrollView, którego orientation jest vertykalny. Do LinearLayout dodawać w pętli row.xml, jako view, który będzie miał w sobie np. 2 obrazki. Tym sposobem w 1 linii LinearLayout otrzymam row.xml z 2 obrazkami, w następnej także itd. LinearLayout jest vertykalny, więc row.xml będzie przeskakiwał do następnej linii. Dzięki temu uzyskam efekt taki jaki zamierzam.
Liczbę obrazków, które zmieszczą się do row.xml i obrazki będę dostawał z serwera. Wyżej napisałem 2 obrazki tak przykładowo.
Nie wiem czy to jest dobre rozwiązanie. Czy macie może lepszy pomysł?

Nie przetestowałem go bo mam problem z poprawnością kodu.

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		LinearLayout layoutMain = (LinearLayout)findViewById(R.id.linearLayout1);
		LinearLayout layoutWithRowXml = (LinearLayout)findViewById(R.id.rowLinearLayout);
		
		LayoutInflater inflater = (LayoutInflater)this.getSystemService
				  (Context.LAYOUT_INFLATER_SERVICE);
		
		for(int x=0;x<5;x++) {
	        ImageView image = new ImageView(MainActivity.this);
	        image.setBackgroundResource(R.drawable.ic_launcher);
	        layoutWithRowXml.addView(image);
	    }
		
		View entrie = inflater.inflate(R.layout.row_list,null, false);
		layoutMain.addView(entrie);
	}

layoutMain znajduje się w Layoucie Activity z setContentView. Natomiast layoutWithRowXml to oddzielny plik XML. Zapewne z tego powodu nie mogę dodać image do layoutWithRowXml. Wywala mi aplikacje. Nie wiem jak powinno wyglądać to poprawnie.
Pytanie: layoutWithRowXml należy do R.layout.row, więc jeśli stworzę View (tak jak w kodzie), i dodam go do layoutMain to doda się pusty czy z tymi images, którymi go uzupełniłem?

Proszę o pomoc, wskazówki cokolwiek !
Pozdrawiam NieZnasz

0

Rozwiązałem problem, nauczyłem się poprawnie używać LayoutInflater'a. Teraz wyświetla 5 rzędów po 5 obrazków.
Rozwiązanie:

for(int b=0;b<5;b++) {
		LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View vi = inflater.inflate(R.layout.row_list, null); //log.xml is your file.
        
		LinearLayout layoutMain = (LinearLayout)findViewById(R.id.linearLayout1);
		LinearLayout layoutWithRowXml = (LinearLayout)vi.findViewById(R.id.rowLinearLayout);
		
		for(int x=0;x<5;x++) {
	        ImageView image = new ImageView(MainActivity.this);
	        image.setBackgroundResource(R.drawable.ic_launcher);
	        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
	        image.setLayoutParams(layoutParams);
	        layoutWithRowXml.addView(image);
	    }
		
		layoutMain.addView(vi);
		}

Ale muszę ustawiać rozmiar image, co jest kłopotliwe.
Rozwiązania są 2:

  1. Pobierać w xml z serwera razem z obrazkami ich rozmiary i je podawać.
  2. Ustawiać oryginalny rozmiar obrazka, ale nie wiem jak to się robi.

Co wy na to?

0

Użyj GridView :)

0

Daje tak: ScroolView -> GridLayout -> addImage to GridLayout ... i ustawiają się jeden pod drugim :]
Obecnie mam tak: ScroolView -> LinearLayout (vertical) -> do niego wrzucam LinearLayout(horizontal) z 5 obrazkami robię to w pętli i ustawia mi się 5 kolumn po 5 obrazków tak jak chciałem :P Chyba, że nie w to miejsce wrzucam GridLayout i nie o to Ci chodziło :P

Ale ogólnie postęp idzie w Androidzie :D

1

Pokombinuj z atrybutem columnCount i rowCount.

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