Погрузка изображения от URL, но шоу ANR и силы закрывает применение

Привет мое приложение - о парсинге xml файл, и затем загрузите изображение от URL и также текста и покажите его в представлении списка, но каждый раз, когда загружаю изображение от URL и в то время как завивание списка рассматривает мало вниз, это не может загрузить изображение правильно, и это вызывает, закрывает приложение. Теперь, как преодолеть ситуацию. Пожалуйста, помогите, вот мой код для загрузки изображения от URL и также текста.

public class NewsRowAdapter extends ArrayAdapter 
{
    LoadingImage loadingImage;
    Bitmap bitmap = null;
    private Activity activity;
    private List items;
    private Item objBean;
    private int row;
    /*private DisplayImageOptions options;
    ImageLoader imageLoader;*/

    public NewsRowAdapter(Activity act, int resource, List arrayList) 
    {
        super(act, resource, arrayList);
        this.activity = act;
        this.row = resource;
        this.items = arrayList;

        /*options = new DisplayImageOptions.Builder().showStubImage(R.drawable.blank).showImageForEmptyUrl(R.drawable.blank).cacheInMemory().cacheOnDisc().build();
        imageLoader = ImageLoader.getInstance();*/


    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        ViewHolder holder;
        if (view == null) 
        {
            LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(row, null);

            holder = new ViewHolder();
            view.setTag(holder);
        } else 
        {
            holder = (ViewHolder) view.getTag();
        }

        if ((items == null) || ((position + 1) > items.size()))
            return view;

        objBean = items.get(position);

        holder.tvTitle = (TextView) view.findViewById(R.id.tvtitle);
        holder.tvDesc = (TextView) view.findViewById(R.id.tvdesc);
        holder.tvDate = (TextView) view.findViewById(R.id.tvdate);
        holder.imgView = (ImageView) view.findViewById(R.id.image);
        holder.pbar = (ProgressBar) view.findViewById(R.id.pbar);

        if (holder.tvTitle != null && null != objBean.getTitle() && objBean.getTitle().trim().length() > 0) 
        {
            holder.tvTitle.setText(Html.fromHtml(objBean.getTitle()));
        }
        if (holder.tvDesc != null && null != objBean.getDesc()
                && objBean.getDesc().trim().length() > 0) {
            holder.tvDesc.setText(Html.fromHtml(objBean.getDesc()));
        }
        if (holder.tvDate != null && null != objBean.getPubdate() && objBean.getPubdate().trim().length() > 0)
        {
            holder.tvDate.setText(Html.fromHtml(objBean.getPubdate()));
        }
        if (holder.imgView != null) 
        {
            if (null != objBean.getLink() && objBean.getLink().trim().length() > 0) 
            {
                final ProgressBar pbar = holder.pbar;
                pbar.setVisibility(View.INVISIBLE);
                //---------CHANGES MADE FOR LOADING IMAGE----------//
                Log.d("IMAGE NULL----------", objBean.getLink());


                try 
                {

                    URL linkurl = new URL(objBean.getLink());

                    bitmap = BitmapFactory.decodeStream(linkurl.openConnection().getInputStream());

                    holder.imgView.setImageBitmap(bitmap);

                } catch (MalformedURLException e) 
                {
                    e.printStackTrace();

                } catch (IOException e) 
                {
                    e.printStackTrace();
                }


                /*try 
                {
                    loadBitmap(objBean.getLink());

                } catch (IOException e) 
                {
                    e.printStackTrace();
                }
                */

                /*imageLoader.init(ImageLoaderConfiguration.createDefault(activity));
                imageLoader.displayImage(objBean.getLink(), holder.imgView, options, new ImageLoadingListener()
                {
                            @Override
                            public void onLoadingComplete() 
                            {
                                pbar.setVisibility(View.INVISIBLE);

                            }

                            @Override
                            public void onLoadingFailed() 
                            {
                                pbar.setVisibility(View.INVISIBLE);
                            }

                            @Override
                            public void onLoadingStarted()
                            {
                                pbar.setVisibility(View.VISIBLE);

                            }
                });*/

            } else 
            {
                holder.imgView.setImageResource(R.drawable.ic_launcher);
            }
        }

        return view;
    }





    public class ViewHolder
    {

        public TextView tvTitle, tvDesc, tvDate;
        private ImageView imgView;
        private ProgressBar pbar;

    }

} 
0
nl ja de

2 ответы

Use AsyncTask for downloading the images. Check this: http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html

1
добавлено
Да это будет работать. Это сделает процесс загрузки в нити (Не Нить UI), и вы пытались сделать это в своей нити UI, которая даст ошибку.
добавлено автор user1744952, источник
это будет работать, потому что, когда я пытаюсь завиться быстро, это показывает ANR..
добавлено автор ayansinha, источник
да наконец я достиг, чтобы сделать dat Спасибо после строгих дней, я наконец закончил это. Огромное спасибо:-) @user1744952
добавлено автор ayansinha, источник

Вы управляете Сетевыми операциями на нити UI, попытка создать AsyncTask делают к работе, передозировка Нить. Это довольно легко, все, что необходимо сделать, переместить код.

Так как вы используете это на адаптере, подразумевая, что вы будете населять список пунктов, можно хотеть изучить это. Поскольку вы хотите избежать регулярных проблем с проблемой listviews getView.

Есть также библиотеки с открытым исходным кодом, чтобы помочь загрузить URL в изображения. Например, UrlImageViewHelper от Koush помогает вам сделать это вполне хорошо. От вашего адаптера просто звоните:

        if (holder.imgView != null) {
        if (null != objBean.getLink() && objBean.getLink().trim().length() > 0) {
            final ProgressBar pbar = holder.pbar;
            pbar.setVisibility(View.INVISIBLE);
            //---------CHANGES MADE FOR LOADING IMAGE----------//
            Log.d("IMAGE NULL----------", objBean.getLink());

            String linkurl = new URL(objBean.getLink().toString());
            UrlImageViewHelper.setUrlDrawable(holder.imgView, linkurl, R.id.your_default_drawable);

        }
0
добавлено
Спасибо @daniel_c05 это работало как очарование
добавлено автор ayansinha, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)