2010-08-31 3 views
2

Я застрял в своеобразном сценарии, в то время как разрабатываю приложение в Android.Динамическая загрузка изображений

Мое приложение загружает изображение из Интернета и заполняет его в формате миниатюр в приложении.

Как я не знаю количество изображений/уменьшенных изображений во время разработки, я динамически создаю элементы управления представлением изображений, используя приведенный ниже код.

ArrayList<String> parsedPhoto=oPhotoList.getPhoto(); 
RelativeLayout media = (RelativeLayout)findViewById(R.id.media); 
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT); 

for(int iCounter=0;iCounter<parsedPhoto.size();iCounter++) 
{ 
    bitmap=oParser.DownloadImage(parsedPhoto.get(iCounter)); 
    ImageView img = new ImageView(this); 
    img.setImageBitmap(bitmap); 
    media.addView(img,p); 
} 

Но в этом случае все мои изображения перекрываются друг с другом. В чем я хочу, чтобы в каждой строке отображалось 3 изображения, которые я могу достичь через xml.

Может кто-нибудь помочь мне.

ответ

0

Вместо использования RelativeLayout используйте GridView и адаптер. Это не только сделает его намного более эффективным, он даст вам возможность добавить много других функций (не загружайте изображение, если его уже там, загрузите метаданные и т. Д.)

0

Проблема в том, что вы не поиск изображений в RelativeLayout. С помощью этого макета вам нужно указать, где вы хотите найти каждый элемент. Если вы этого не сделаете, они будут находиться в том же положении.

Есть такие виды, как GridView, который позволяет вам сделать это проще.

Однако вы можете использовать RelativeLayout, если хотите. Вы можете использовать метод класса RelativeLayout.LayoutParams addRule(), чтобы указать местоположение каждого изображения. Например:

Во-первых, вы можете сохранить последние идентификаторы добавленных изображений.

// The id of the first image added in the last row 
int lastFirstId; 
// The id of the last image added 
int lastId; 

Затем создать и указать положение ImageView (с парой исключений для первых изображений):

RelativeLayout.LayoutParams params = new RelativeLayoutParams(); 
params.setRule (params.RIGHT_OF, lastId); 
params.setRule (params.BELOW, lastFirstId); 
img.setLayoutParams(params); 

Я надеюсь, что это помогает