Изображение не загружается с 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'

Другие вопросы по тегам