Witam
Mam problem z wyświeetleniem zdjęć pobranych z sieci odrazu w ImageView. Poki co nie chce robic zadnego cache, zwykle przechwycenie zdjecia ia wrzucenie w ImageView. Problem polega na tym ze nie widać zdjec, sam ImageView zajmuje troche miejsca w aplikacji ale fotki nie widac.
Moze ktos mial taki problem to prosze o rade co zrobic.
Zalaczam kod:
public class VideoAdapter extends ArrayAdapter<Video> {
private Activity activity;
private int resource;
private LayoutInflater inflater=null;
public VideoAdapter(Activity _activity,int _resource,List<Video> _items) {
super(_activity, _resource, _items);
inflater = (LayoutInflater)_activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//i always do this way, but i dont think this is the error
//inflater = LayoutInflater.from(_activity.getBaseContext());
resource = _resource;
activity = _activity;
}
Bitmap bmp;
URL url;
String str="http://www.fun-with-pictures.com/image-files/lamborghini-car.jpg";
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if (convertView == null) {
vi = inflater.inflate(resource, null);
holder=new ViewHolder();
holder.Title = (TextView)vi.findViewById(R.id.title);
holder.Image = (ImageView)vi.findViewById(R.id.image);
vi.setTag(holder);
} else {
holder=(ViewHolder)vi.getTag();
}
Video item = getItem(position);
holder.Title.setText(item.getTitle());
//holder.Source.setText(item.getSource());
holder.Image.setImageDrawable(item.getImage());
holder.Title.setTag(position);
//holder.Source.setTag(position);
holder.Image.setTag(position);
final OnClickListener sourceListener = new OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout ll = (LinearLayout)v.getParent();
TextView tv = (TextView)ll.getChildAt(0);
Integer pos = (Integer) tv.getTag();
//main.makeInfo(pos);
//((Main)activity).makeInfo(pos);
}
};
//holder.Source.setOnClickListener(sourceListener);
final OnClickListener imageListener = new OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout ll = (LinearLayout)v.getParent();
TextView tv = (TextView)ll.getChildAt(0);
Integer pos = (Integer) tv.getTag();
//main.modelInfo(pos);
//((Main)activity).modelInfo(pos);
}
};
//holder.Image.setOnClickListener(imageListener);
final OnClickListener titleListener = new OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout ll = (LinearLayout)v.getParent();
TextView tv = (TextView)ll.getChildAt(0);
Integer pos = (Integer) tv.getTag();
//main.modelInfo(pos);
//((Main)activity).modelInfo(pos);
}
};
//holder.Title.setOnClickListener(titleListener);
return vi;
}
public static class ViewHolder {
TextView Title;
//TextView Source;
ImageView Image;
}
}
public class Video {
private String sSource;
private String sTitle;
private Drawable dImage;
private String sImage;
public Video(String source, String title, String image) {
this.sSource = source;
this.sTitle = title;
this.sImage = image;
}
public String getSource()
{
return this.sSource;
}
public String getTitle()
{
return this.sTitle;
}
public String getUrl()
{
return this.sImage;
}
public Drawable getImage()
{
Drawable image = LoadImageFromURL(this.sImage);
Log.i("Adres url:", this.sImage);
return image;
}
private Drawable LoadImageFromURL(String url)
{
try
{
InputStream is = (InputStream) new URL(url).getContent();
Log.i("LoadImageFromUrl", is.toString());
this.dImage = Drawable.createFromStream(is, "src name");
return dImage;
}
catch(Exception ex)
{
Log.i("ERROR", ex.getMessage());
return null;
}
}
}
Wybaczcie ze tak caly kod klasa po klasie ale nie wiem co moze byc potrzebne.
Bede wdzieczny za pomoc.
Pozdrawiam!
Zauważyłem jedną rzecz, otórz jak wstawie sobie zdjęcie bezpośrendio do ViewImage to działa ok ale jak skorzystam z holdera to już nie, tekst sięwyświetla a zdjecia nie widac. Moze trzeba je jakos wyswietlic dodatkowa metoda?
Zdjecie jak by bylo, bo po kliknieciu podswietla sie na zołty kolor ale go nie widac, ciekawa sprawa 🙂