2015-04-10 1 views
1

Мне нужно показать изображения, которые у меня есть в моей папке с рисунком. Я создал целочисленный массив для хранения Drawable иды как такЗагрузка изображения не работает при передаче HashMap пользовательскому массиву adpater универсального загрузчика изображений

private int[] itemImages = new int[]{ 
      R.drawable.image1, R.drawable.image2, R.drawable.image3, 
      R.drawable.image4, R.drawable.image5, R.drawable.image6, 
      R.drawable.image7, R.drawable.image8, R.drawable.image9, 
      R.drawable.image10, R.drawable.image11, R.drawable.image12, 
      R.drawable.image13, R.drawable.image14, R.drawable.image15, 
      R.drawable.image16, R.drawable.image7, R.drawable.image18, 
      R.drawable.image19, R.drawable.image20, R.drawable.image21, 
      R.drawable.image22, R.drawable.image23, R.drawable.image24, 
      R.drawable.image25, R.drawable.image26, R.drawable.image27 
    }; 

и некоторые другие тексты itemPrice и itemNames затем создал список и передал элементы адаптера пользовательского массива

List<HashMap<String, String>> imageArray = new ArrayList<HashMap<String, String>>(); 

      for (int i = 0; i < itemImages.length; i++) { 
       HashMap<String, String> hm = new HashMap<String, String>(); 
       hm.put("name", "Name : " + itemNames[i]); 
       hm.put("price", "Price : " + itemPrices[i]); 
       hm.put("image", Integer.toString(itemImages[i])); 
       imageArray.add(hm); 
      } 
    Custom_Adapter adapter = new Custom_Adapter(getApplicationContext(), 
R.layout.imagelist_layout, imageArray); 

GetView в адаптер настраиваемого массива -

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View displeyView = inflater.inflate(R.layout.imagelist_layout, parent, false); 
    ImageView img = (ImageView) displeyView.findViewById(R.id.image); 
    TextView name = (TextView) displeyView.findViewById(R.id.name); 
    TextView price = (TextView) displeyView.findViewById(R.id.price); 

    try { 
     final HashMap<String, String> imgList = imageList.get(position); 
     final String image = imgList.get("image"); 
     final String price1 = imgList.get("price"); 
     final String name1 = imgList.get("name"); 

     imageLoader.displayImage(image, img, options); 
     name.setText(name1); 
     price.setText(price1); 
    } catch (Exception e) { 
    } 
    return displeyView; 
} 

, делая это, показаны тексты. но я не могу просмотреть изображения. отображается R.drawable.errorimage. Как я могу это решить?

ответ

2

Если вы просто пытаетесь установить рисуем изображение на фоне вашего ImageView в вы можете установить его только с

imageView.setImageResource(yourDrawable); 

Но я думаю, что у вас есть проблемы с памятью или вам нужно использовать параметры отображения Unviersal Image Loader, такие как скругленные растровые изображения и т. Д.

Вы можете установить вытяжку с универсальным погрузчиком изображения:

String yourUrl = "drawable://" + R.drawable.your_drawable; 
      com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(yourUrl, yourImageView, displayOptions); 

Я надеюсь, что это поможет вам.

+0

этот код работает, но изображения отображаются в перегруженном формате –

+0

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

+0

спасибо за помощь. Мне просто нужно было упорядочить изображения в списке. Большое спасибо :) –

1

Универсальный загрузчик изображений позволяет загружать изображения в Интернете с хорошим эффектом и для загрузки локальных изображений, предпочитающих собственный способ загрузки чертежей - ImageView.setImageResource (...) вместо использования ImageLoader хорош в зависимости от меня ...

использование

img.setImageResource(image); 

вместо

imageLoader.displayImage(image, img, options); 

для Уил

первую очередь изменить ваш массив

private String[] itemImages = new String[]{ 

    "drawable://R.drawable.image1","drawable://R.drawable.image2", 
    ... 
}; 



    List<HashMap<String, String>> imageArray = new ArrayList<HashMap<String, String>>(); 

      for (int i = 0; i < itemImages.length; i++) { 
       HashMap<String, String> hm = new HashMap<String, String>(); 
       hm.put("name", "Name : " + itemNames[i]); 
       hm.put("price", "Price : " + itemPrices[i]); 
       hm.put("image", (itemImages[i])); 
       imageArray.add(hm); 
      } 
    Custom_Adapter adapter = new Custom_Adapter(getApplicationContext(), 

    @Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View displeyView = inflater.inflate(R.layout.imagelist_layout, parent, false); 
    ImageView img = (ImageView) displeyView.findViewById(R.id.image); 
    TextView name = (TextView) displeyView.findViewById(R.id.name); 
    TextView price = (TextView) displeyView.findViewById(R.id.price); 

    try { 
     final HashMap<String, String> imgList = imageList.get(position); 
     final String image = imgList.get("image"); 
     final String price1 = imgList.get("price"); 
     final String name1 = imgList.get("name"); 

     imageLoader.displayImage(image, img, options); 
     name.setText(name1); 
     price.setText(price1); 
    } catch (Exception e) { 
    } 
    return displeyView; 
} 
+0

Из за исключением памяти –

+0

@VishnuTB встречается, проверьте мой редактировать на свой код в мой ответ –

0

Попробуйте этот код: -

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View displeyView = inflater.inflate(R.layout.imagelist_layout, parent, false); 
    ImageView img = (ImageView) displeyView.findViewById(R.id.image); 
    TextView name = (TextView) displeyView.findViewById(R.id.name); 
    TextView price = (TextView) displeyView.findViewById(R.id.price); 

    try { 
     final HashMap<String, String> imgList = imageList.get(position); 
     final String image = imgList.get("image"); 
     final String price1 = imgList.get("price"); 
     final String name1 = imgList.get("name"); 


Drawable drawable = getResources().getDrawable(getResources() 
        .getIdentifier(Integer.parseInt(image), "drawable", getPackageName())); 

      img.setImageDrawable(drawable); 


     name.setText(name1); 
     price.setText(price1); 
    } catch (Exception e) { 
    } 
    return displeyView; 
} 
+0

кошке использовать getResources.getDrawable –

Смежные вопросы