2014-10-07 1 views
0

Я попытался реализовать горизонтальный список ListView. В этом упражнении у меня есть один ImageView и один Horizontal ListView. Если я выберу любое изображение из этого горизонтального ListView, это изображение будет отображаться над горизонтальным списком ListView. По умолчанию первое изображение отображается на этом ImageView. Здесь изображение не отображается на ImageView:Не отображает изображение на изображении в горизонтальном списке

String Imagefile ="http://www.example.com/wp-content/uploads/2014/10/Screenshot_2014-10-07-11-52-52-1412678971.png"; 
selectedImage = (ImageView) findViewById(R.id.imageView1); 
imageLoader=new ImageLoader(DetailPage.this.getApplicationContext()); 
imageLoader.DisplayImage(Imagefile, selectedImage); 

Теперь изображение хорошо отображается на ImageView. Но если я попытался установить динамическое изображение, изображение не будет отображаться в ImageView.

GalleryImageAdapter adapter = new GalleryImageAdapter(DetailPage.this, categories); 
gallery.setAdapter(adapter); 
String Imagefile =categories[0].toString(); 
selectedImage = (ImageView) findViewById(R.id.imageView1); 
//imageLoader=new ImageLoader(DetailPage.this.getApplicationContext()); 
//imageLoader.DisplayImage(Imagefile, selectedImage); 
gallery.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
System.out.println("Selected-Image"+" "+categories[position].toString()); 
    //imageLoader=new ImageLoader(DetailImage.this.getApplicationContext()); 
    // imageLoader.DisplayImage(categories[position].toString(), selectedImage); 

      } 
     }); 
     } 
     class GalleryImageAdapter extends ArrayAdapter<String> 
    { 
    private final Context context; 
     private final String[] categories; 
     public ImageLoader imageLoader; 
     public GalleryImageAdapter(Context context, String[] categories) { 
     super(context, R.layout.rowlayout, categories); 
     this.context = context; 
     this.categories = categories; 
     imageLoader=new ImageLoader(context.getApplicationContext()); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View i = inflater.inflate(R.layout.rowlayout, parent, false); 
     ImageView imageView = (ImageView) i.findViewById(R.id.icon); 
     // imageLoader=new ImageLoader(context.getApplicationContext()); 
     imageLoader.DisplayImage(categories[position], imageView); 
     System.out.println("Image"+" "+categories[position]); 
     return i; 
    } 
    }  

Но я получаю URL на LogCat:

10-07 16:46:35.559: I/System.out(1105): default-Image "http://www.example.com/wp-content/uploads/2014/10/Screenshot_2014-10-07-11-52-52-1412678971.png" 
10-07 17:22:50.009: I/System.out(3607): Image http://example.com/wp-content/uploads/2014/10/Screenshot_2014-10-07-11-52-52-1412678971.png 

Что неправильно в моем коде?

EDIT:

Да, я изменил мой код, как:

 GalleryImageAdapter adapter = new GalleryImageAdapter(DetailImage.this, R.layout.rowlayout,categories); 

     class GalleryImageAdapter extends ArrayAdapter<String> 
     { 
     private final Context context; 
     private final String[] categories; 
     public ImageLoader imageLoader; 
     private int resourceId; 
     public GalleryImageAdapter(Context context, int resourceId,String[] categories) { 
     super(context, R.layout.rowlayout, categories); 
     this.context = context; 
     this.resourceId = resourceId; 
     this.categories = categories; 
     imageLoader=new ImageLoader(context.getApplicationContext()); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View i = inflater.inflate(resourceId, parent, false); 

Но до сих пор в настоящее время не показывает изображение на ImageView. Пожалуйста, проверьте его.

EDIT:

мне нужен точный результат с динамическими данными, как показано ниже урока:

http://www.learn-android-easily.com/2013/07/android-gallery-view-example.html

+0

проверить ссылку не работает HTTP: // WWW. example.com/wp-content/uploads/2014/10/Screenshot_2014-10-07-11-52-52-1412678971.png –

+0

@NaveenTamrakar Эта ссылка является образцом только одного. Я использовал действительный url ... Мы ограничивать наш url на public.that почему я опубликовал с образцом URL. –

+0

использовать это изображение url http://techbeasts.com/wp-content/uploads/2013/08/Android1.jpg –

ответ

1

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

public class MainActivity extends ActionBarActivity { 
ImageView selectedImage; 

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

    ListView gallery; 
    gallery = (ListView) findViewById(R.id.lv_horiz); 
    final String[] categories; 
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      getApplicationContext()).build(); 
    ImageLoader.getInstance().init(config); 
    categories = getResources().getStringArray(R.array.images); 
    GalleryImageAdapter adapter = new GalleryImageAdapter(
      getApplicationContext(), getResources().getStringArray(
        R.array.images)); 
    gallery.setAdapter(adapter);   
    selectedImage = (ImageView) findViewById(R.id.image); 
    gallery.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 
      System.out.println("Selected-Image" + " " 
        + categories[position].toString()); 
      ImageLoader.getInstance().displayImage(
        categories[position].toString(), selectedImage); 

     } 
    }); 
} 

}

Класс для адаптера:

class GalleryImageAdapter extends ArrayAdapter<String> { 
private final Context context; 
private final String[] categories; 
public ImageLoader imageLoader; 

public GalleryImageAdapter(Context context, String[] categories) { 
    super(context, R.layout.rowlayout, categories); 
    this.context = context; 
    this.categories = categories; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    View i = inflater.inflate(R.layout.rowlayout, parent, false); 
    ImageView imginlist = (ImageView) i.findViewById(R.id.iv_inlist); 
    TextView text = (TextView) i.findViewById(R.id.tv_name); 
    ImageLoader.getInstance().displayImage(categories[position], imginlist); 
    System.out.println("Image" + " " + categories[position]); 
    return i; 
} 

}

Примечание: Это только изменяет изображение в верхней части при нажатии на элемент управления ListView изображение (изображение внутри списка), если вы хотите изменить изображение, когда изображение, которое просматривается из списка, просто объявляет статический метод внутри действия и вызовите его из интерфейса getview. PS PM, если вам нужен образец prjoect как Zip.

+0

Да, она работает нормально. Если у меня есть универсальная библиотека загрузчика изображений. Спасибо :) –

+0

You Welcome @KrishnaVeni :) (y) –

1

создать ImageLoader's объект внутри конструктора не в getView(...)

public GalleryImageAdapter(Context context, int resourceId, String[] categories) { 
    super(context, resourceId, categories); 
    this.context = context; 
    this.resourceId = resourceId; 
    this.categories = categories; 
    imageLoader=new ImageLoader(context.getApplicationContext()); 
} 

закомментируйте те линии внутри onItemClick

В Activity где вы создать объект для GalleryImageAdapter передачи макета в этом, как В параметре

GalleryImageAdapter adapter = new GalleryImageAdapter(DetailPage.this, R.layout.rowlayout, categories); 

В getView(...) вместо R.layout.rowlayout использования resourceId.

PS:Public Constructors of ArrayAdapter

+0

Да, я изменился как ваша логика ... но изображение не отображается. –

+0

может у вас обновить ур вопрос с последним кодом – kId

+0

Я обновил свой код –

0

Попробуйте изменить эту строку

View i = inflater.inflate(R.layout.rowlayout, parent, false); 

в

View i = inflater.inflate(R.layout.rowlayout, null); 
1

ладно это то, что им думать о проблеме на вашем imageloader class..try этом в ваша основная активность или глобальная деятельность ... скопировать и вставить этот код очень

DisplayImageOptions options = new DisplayImageOptions.Builder() 
    .cacheInMemory() 
    .cacheOnDisc() 
    .imageScaleType(ImageScaleType.EXACTLY)  
    .build(); 
    // Load and display image 
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(c) 
    .defaultDisplayImageOptions(options) 
    .build(); 
    ImageLoader.getInstance().init(config); 

затем в вашем массиве конструктора удалить и заменить - (это старый constructor- (ваш))

public GalleryImageAdapter(Context context, int resourceId,String[] categories) { 
    super(context, R.layout.rowlayout, categories); 
    this.context = context; 
    this.resourceId = resourceId; 
    this.categories = categories; 
    imageLoader=new ImageLoader(context.getApplicationContext()); //remove this line 
    } 

теперь вы have- (Editted конструктор)

public GalleryImageAdapter(Context context, int resourceId,String[] categories) { 
    super(context, R.layout.rowlayout, categories); 
    this.context = context; 
    this.resourceId = resourceId; 
    this.categories = categories; 
    } 

затем спуститься к вашему GetView и сделать это - (вы можете копировать вставить это заменить GetView)

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View i = inflater.inflate(R.layout.rowlayout, parent, false); 
    ImageView imageView = (ImageView) i.findViewById(R.id.icon); 
    ImageLoader.getInstance().displayImage(categories[position], imageView); 
    System.out.println("Image"+" "+categories[position]); 
    return i; 
} 

Примечание. Если параметры изображения не были переданы методу ImageLoader.displayImage (...), тогда будут использоваться параметры отображения по умолчанию из конфигурации (ImageLoaderConfiguration.defaultDisplayImageOptions (...)).

дайте мне знать, если это помогает

+0

эй спасибо за вашу помощь.он работает отлично –

+0

хорошо atleast +1 будет хорошо..lol @KrishnaVeni – Elltz

+0

ну почему я не получил 50 рецензий на награду? @Elltz? она должна предоставить меня вручную? : D LOL –

0

В коде вы прокомментировали строку для создания объекта imageloader и установили это изображение на объект selectedImage.

gallery.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     System.out.println("Selected-Image"+" "+categories[position].toString()); 
     // imageLoader=new ImageLoader(DetailImage.this.getApplicationContext()); 
     // imageLoader.DisplayImage(categories[position].toString(), selectedImage); 
    } 
}); 

изменить его:

gallery.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     System.out.println("Selected-Image"+" "+categories[position].toString()); 
     imageLoader=new ImageLoader(DetailImage.this.getApplicationContext()); 
     imageLoader.DisplayImage(categories[position].toString(), selectedImage); 
    } 
}); 
+0

уже я пробовал с this.but я не получил решение –

0

Вы должны использовать залп в сети ImageView

Вам просто нужно следовать этому tutorial