2014-10-07 5 views
2

Я использую загрузчик изображений для отображения изображения и текста из разбора json. текст отображается, но изображение не отображается. Нет ошибки, но отображается значок по умолчанию. кто-нибудь, пожалуйста, помогите мне, почему изображение не отображается. Мой код выглядит следующим образом:Изображение не отображается при использовании загрузчика изображений android

public class GridAdapter extends ArrayAdapter<Persons> { 
ArrayList<Persons> personList; 
LayoutInflater layoutInflater; 
int Resource; 
ViewHolder viewHolder; 
ImageLoader imageLoader; // declared image laoder 

public GridAdapter(Context context, int resource, ArrayList<Persons> objects) { 
    super(context, resource, objects); 
    layoutInflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Resource = resource; 
    personList = objects; 
    } 
    @Override 
    public int getCount() { 
    // TODO Auto-generated method stub 
return super.getCount(); 
    } 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
View v= convertView; 
imageLoader = new ImageLoader(getContext()); // since thrown null pointer exception when i declared this, it's not declaring null pointer exception but image is not displaying, default icon set in ImageLoader is displaying.. 

if(v==null){ 
    viewHolder = new ViewHolder(); 
    v = layoutInflater.inflate(Resource, null); 
    viewHolder.tvName=(TextView)v.findViewById(R.id.tvname); 
    viewHolder.imageview=(ImageView)v.findViewById(R.id.picture); 
    v.setTag(viewHolder); 


} 
else{ 
    viewHolder = (ViewHolder) v.getTag(); 

    } 
    viewHolder.tvName.setText(personList.get(position).getName()); 
    imageLoader.DisplayImage(personList.get(position).getImage(),viewHolder.imageview);// this is not working.. 
// TODO Auto-generated method stub 
    return v; 
    } 
static class ViewHolder { 
public ImageView imageview; 
public TextView tvName; 


    } 

} 

Примечание:

, если я использую это,

частный класс DownloadImageTask расширяет AsyncTask { ImageView bmImage;

public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 

} 

и установить в ImageView в

new DownloadImageTask(holder.imageview).execute(actorList.get(position).getImage()); 

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

+0

проверить URL-адрес изображения может быть неправильным или проверить разрешение сети в вашем проекте –

+0

@NaveenTamrakar я дал разрешения. пожалуйста, проверьте мои изменения. – Star

+0

Попробуйте 'imageLoader = ImageLoader.getInstance(); imageLoader.init(); 'и поместите это на конструктор адаптера. –

ответ

0

Я могу предложить вам использовать библиотеку ION для загрузки изображений, подобных этому. С этой библиотекой требуется только этот кусок коды для загрузки изображения из URL асинхронно:

 String url = datamap.get(image1); 
     Ion.with(holder.userImage).placeholder(R.drawable.new_loading) 
       .error(R.drawable.loading_animation).load(url); 
+0

Я использовал это тоже .. неподвижное изображение не отображается – Star

0

Чтобы загрузить изображение с сервера асинхронно вы можете использовать Пикассо небольшую библиотеку. Вот Gradle

compile 'com.squareup.picasso:picasso:2.3.3' 

вот ваш ImageView

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

Вот простой код Java

ImageView imageView = (ImageView) findViewById(R.id.imageView); 

    Picasso.with(this) 
      .load("YOUR_IMAGE_URL") 
      .into(imageView); 

Вот так. Для получения дополнительной информации посетите here

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