Изображение не загружается с URL при просмотре списка
В настоящее время я работаю на Android, и я создал listview
который загружает изображения с URL. Я добился этого с помощью следующего кода
InputStream is = (InputStream) new URL("http://ka.35pk.com/uploadfiles/gamepic/090830121252.jpg").getContent();
Drawable d = Drawable.createFromStream(is, "pic name");
imageview.setImageDrawable(d);
в listview
изображение не загружается, пока я не прокрутите вниз listview
один раз. Но он может загружаться правильно на невидимой части listview
, то есть, если у меня есть 100 изображений в виде списка, только 10 изображений были видны на экране одновременно, эти 10 изображений не могут загружаться в начале, когда я прокручиваю вниз, еще 10 невидимых изображений теперь приходят в видимую часть, и теперь эти изображения успешно загружаются, опять же, когда я прокручиваю вверх, теперь эти загруженные изображения также загружаются, что означает, что они не могут быть загружены, когда они были видны на экране. Извините за мой английский. Надеюсь, я объяснил в деталях. Как я могу загрузить все listview
изображения из URL без использования прокрутки вниз / вверх. пожалуйста, помогите мне. Благодарю.
1 ответ
Проверьте этот ответ, это поможет вам:
а также
Если в вашем приложении много изображений, а также есть проблема с памятью, тогда вам придется справиться с этим должным образом.
Как скачать изображение в списке, используя ленивую загрузку. а для других изображений используйте другой способ, например, ссылку 2.
для вашей проблемы прокрутки проверьте ваш getView()
код в адаптере добавить, как показано ниже:
public class ListViewAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ListViewAdapter(Context con) {
// TODO Auto-generated constructor stub
mInflater = LayoutInflater.from(con);
}
public int getCount() {
// TODO Auto-generated method stub
return SoapParser.title_date.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
// return product_id1.size();
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
// return product_id1.get(position).hashCode();
return position;
}
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
final ListContent holder;
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.row_tb, null);
holder = new ListContent();
holder.date = (TextView) v.findViewById(R.id.textView1);
holder.actual = (TextView) v.findViewById(R.id.textView2);
holder.targate = (TextView) v.findViewById(R.id.textView3);
v.setTag(holder);
} else {
holder = (ListContent) v.getTag();
}
holder.date.setId(position);
holder.actual.setId(position);
holder.targate.setId(position);
holder.date.setText(" " + SoapParser.title_date.get(position));
holder.actual.setText(" " + SoapParser.title_actual.get(position));
holder.targate
.setText(" " + SoapParser.title_targate.get(position));
return v;
}
}
если вы используете любой другой вид в макете, то сделайте это android:focusable='false'