У меня есть ListView
, который содержит список изображений, созданных по веб-ссылке (например, http://www...image.jpg
) с помощью istruction:
Drawable d = LoadImageFromUrlWeb(TopTen_LinkImg);
imageTopTenView.setImageDrawable(d);
Я создал пользовательский ArrayAdapter
(простой иоптимизирован с тем же результатом «держатель»).
Проблема в том, что каждое изображение при отображении на дисплее загружается из Интернета и просматривать список страниц невозможно (слишком медленно).
Существуеткод, который присваивает ImageView
постоянное изображение.
Код:
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row_top_ten, null);
ImageView imageTopTenView = (ImageView)rowView.findViewById(R.id.imageTopTen);
String TopTen = (String)ArrayDatiTopTen.get(position);
String[] ArrayTopTen=TopTen.split(",");
String TopTen_LinkImg=(String)ArrayTopTen[0];
Drawable d = LoadImageFromUrlWeb(TopTen_LinkImg);
imageTopTenView.setImageDrawable(d);
return rowView;
}
Возможно, решение заключается в заполнении списка с использованием программного кода:
ListView listView=(ListView) findViewById(R.id.listView);
...
listView.addView(...)
...
Решено
Я решил создать массив Drawable и заполнить этот массив изображением перед использованием в ArrayAdapter
// Define:
Drawable imageCache[]=new Drawable[100];
затем:
//loop to popolate array
imageCache[ct]=LoadImageFromUrlWeb(Link);
ВArrayList
Я использую:
...
imageTopTenView.setImageDrawable(imageCache[position]);
return rowView;
...
От строки URL до нарисованного:
private Drawable LoadImageFromUrlWeb(String url)
{
try
{
url=url.replaceAll(" ", "%20");
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}
catch (Exception e)
{
Log.w("LoadImageFromUrlWeb",e.toString());
return null;
}
}