Форум программистов, компьютерный форум CyberForum.ru

Статический listener - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Обработать событие onBackPressed во фрагменте http://www.cyberforum.ru/android-dev/thread1792647.html
У меня есть фрагмент который запускается через транзакцию и как можно обработать в нем нажатие кнопки back и выполнить определенные действия?
Программирование Android Не отображается Google map Добрый день. Сразу скажу, перерыл весь форум, но это не помогло. Я начинаю только разбираться в Android Studio, поэтому сильно не пинайте. Мануалы то же читал, то же не помогает. Ситуация такая: если создать проект с нуля при помощи самой студии и выбрать шаблон с гуугло-картами, то при запуске проекта (не зависимо на эмуляторе, либо на рабочем смарте), то карта работает и отображается метка (в... http://www.cyberforum.ru/android-dev/thread1792638.html
Сложить 2 цвета и установить цвет статус бар Программирование Android
Есть цвет #f78536 и на него накладывается тень #1a000000. Какой будет результирующий цвет? Как это можно узнать? И как потом программно установить этот результирующий цвет в статус бар?
Генератор звукового сигнала Программирование Android
Здравствуйте, кто может помочь написать простенький генератор сигнала, синус. Важна любая помощь. По интернетам смотрел информации мало. Если у кого-то есть желание, может в личку написать, может договоримся.
Программирование Android Задать таймаут перед разрывом блютуз соединения http://www.cyberforum.ru/android-dev/thread1792492.html
Привет! Товарищи, подскажите как реализовать возможность разрывать bluetooth соединение между двумя девайсами после определенного времени. К примеру два девайся оказались на недопустимом расстоянии для сохранения подключения. Или по каким-то причинам сигнал оборвался а потом может восстановиться но соединение уже разорвано. Как установить таймаут перед разрывом? Спасибо. Добавлено через 3...
Программирование Android Клавиатура. Как можно упростить использование? Появилось несколько вопросов по клавиатуре. 1) Можно ли сделать программное нажатие кнопки на клавиатуре? А именно микрофон (распознавание речи) То есть чтобы например по клику в edittext сразу открывалась клавиатура и начиналось распознавание речи. 2) если то что описано в вопросе №1 не реально, то можно ли сделать в программе как бы "клавиатуру" что при нажатии на edittext открывается... подробнее

Показать сообщение отдельно
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
15.08.2016, 11:24  [ТС]
Забыл добавить, в статье https://habrahabr.ru/post/258195/ рекомендуют использовать WeakReference, правда, там приложение к своему случаю + использование стороннего кода. И ListView, и RecyclerView, как следует из многочисленных статей, не хранят ссылки на элементы, ушедшие с экрана. Т.е. проблема, вероятно, в Glide. Код могу привести, только вряд ли это поможет.

Добавлено через 16 минут
Удалил лишнее (проверки, TextView), вот что осталось. Часть методов также опустил, они не должны влиять на увеличение памяти.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        final ViewHolder viewHolder = (ViewHolder) holder;
        final Item item = this.items.get(position);
 
            // Убираем скачки при прокрутке, для этого устанавливаем высоту ImageView.
            if (item.photoHeight > 0) {
                viewHolder.photo.getLayoutParams().height = item.photoHeight;
                viewHolder.photo.requestLayout();
            }
 
            if (viewHolder.photoUrl == null
                    || !viewHolder.photoUrl.equals(item.photoUrl) && !viewHolder.photoUrl.equals(item.thumbUrl)
                    || viewHolder.photo.getDrawable() == null) {
 
                downloadPhoto(item, viewHolder);
            }
 
            viewHolder.number.setText(item.number);
    }
 
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(resource, parent, false);
        return new ViewHolder(view);
    }
 
//    @Override
//    public void onViewDetachedFromWindow(RecyclerView.ViewHolder holder) {
//        super.onViewDetachedFromWindow(holder);
//        ViewHolder viewHolder = (ViewHolder) holder;
//        Glide.clear(viewHolder.photo);
//    }
 
    /**
     * Загрузить фотографию.
     */
    private Target<GlideDrawable> downloadPhoto(final Item item, final ViewHolder viewHolder) {
        return Glide.with(context)
                .load(item.photoUrl)
                .crossFade(0)
                .thumbnail(getThumbnailRequest(item, viewHolder))
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
//                        .skipMemoryCache(true)
                .placeholder(R.drawable.placeholder)
                .fallback(R.drawable.placeholder)
                .error(R.drawable.placeholder)
                .listener(new RequestListener<String, GlideDrawable>() {
                    @Override
                    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                        return false;
                    }
 
                    @Override
                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                        viewHolder.photoUrl = item.photoUrl;
                        item.photoHeight = getImageViewHeight(resource, viewHolder.photo);
                        return false;
                    }
                })
                .into(viewHolder.photo);
    }
Разметку не даю, думаю, пока нет необходимости. Там FrameLayout, в котором есть ProgressBar, LinearLayout с фотографией, текстом.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    public static class Item {
        public String number;
        public String photoUrl; // Путь к фотографии.
        public String thumbUrl; // Путь к уменьшенному изображению.
        public int photoHeight;
 
        public Item() {
        }
 
        public Item(String number,String photoUrl, String thumbUrl) {
            this.number = number;
            this.photoUrl = photoUrl;
            this.thumbUrl = thumbUrl;
            this.photoHeight = 0;
        }
    }
 
    private static class ViewHolder extends RecyclerView.ViewHolder {
        protected final ImageView photo;
        protected final TextView number;
        protected String photoUrl;
 
        public ViewHolder(View view) {
            super(view);
            this.photo = (ImageView) view.findViewById(R.id.photo);
            this.number = (TextView) view.findViewById(R.id.number);
        }
    }
Добавлено через 4 минуты
Конструктор адаптера тривиален, но приведу, на всякий случай.
Java
1
2
3
4
5
6
7
8
9
10
11
12
    private final Context context;
    private final int resource;
    private final List<Item> items;
    private final LayoutInflater inflater;
 
    public SomeAdapter(Context context, int resource, List<Item> items) {
        super();
        this.context = context;
        this.resource = resource;
        this.items = items;
        this.inflater = LayoutInflater.from(context);
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru