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

Ссылки (<a href="LINK">XXX</a>) внутри ListView - Android

Войти
Регистрация
Восстановить пароль
 
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
26.08.2014, 21:57     Ссылки (<a href="LINK">XXX</a>) внутри ListView #1
Есть контент который я выкачиваю из интернета, и отображаю в листе. Контент располагается в объекте Spanned. В контенте могут быть ссылки, а могут и не быть) И если они есть их нужно отобразить в TextView, с чем прекрасно справляется метод setText этого класса. Но вот как сделать, чтоб при нажатии на эту ссылку открывалось нужное мне активити?

Пробовал так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
viewHolder.tvStory.setMovementMethod(new LinkMovementMethod(){
                @Override
                public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
                    int i = event.getAction();
                    try {
                        return super.onTouchEvent( widget, buffer, event ) ;
                    } catch( Exception ex ) {
                        Toast.makeText( context, "Could not load link  " +buffer, Toast.LENGTH_LONG ).show();
                        return true;
                    }
                }
          });
реагирует на нажатие, но вот как получить саму ссылку в методе onTouchEvent не понимаю, плюс у меня на лист нацеплен обработчик жестов и такая реализация вызывает крах приложения если этот самый обработчик не отключить. Вот я и думаю может легче будет все это отобразить в WebView заместо TextView? Или может есть какая нибудь вменяемая реализация моей проблемы при помощи TextView?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2014, 21:57     Ссылки (<a href="LINK">XXX</a>) внутри ListView
Посмотрите здесь:

Индексация внутри ListView Android
Android ViewPager внутри ListView, Как вставить?
Android EditText и добавление символов в него через собственную "клавиатуру"
Android После вызова notifydataset() items в listview "моргают"
Как сохранить ссылки на рисунки в sql и затем отобразить их в listview Android
Android Как обратиться к элементу (button) внутри пункта списка (ListView)
Spinner внутри ListView Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
26.08.2014, 23:46     Ссылки (<a href="LINK">XXX</a>) внутри ListView #2
Мне нравиться вот такой способ:
http://sourabhsoni.com/implementing-...d-application/
очень элегантный и простой.
естественно, вместо хэштегов можно поставить ссылки заменив регулярку в строчке:
Java
1
Pattern tagMatcher = Pattern.compile("[#]+[A-Za-z0-9-_]+\\b");
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.08.2014, 17:27  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #3
Спасибо, за решение, но возникла следующая проблема.

Допустим есть строка : "Шла <a href="http://LINK">Маша</a> по шоссе, и ..." c помощью регулярки я нашел ссылку и сделал ее кликабельной, но как чтоб в место <a href="http://LINK">Маша</a> отображалось только имя ссылки и при нажатии на него происходил переход. Для хэштегов ваш вариант подходит идеально но для ссылок подобного типа не совсем.

Если в setText засунуть Spanned ссылка определяется но становится не кликабельна
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
27.08.2014, 18:43     Ссылки (<a href="LINK">XXX</a>) внутри ListView #4
В таком случае можно пойти изначальным путем, и написать свой LinkMovementMethod:
http://stackoverflow.com/a/16644228/2894324
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.08.2014, 20:05  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #5
Netscape, как я говорил у меня на Лист нацеплен обработчик жестов унаследованный от GestureDetector.SimpleOnGestureListener. И если я использую вариант с методом setMovementMethod у меня происходит вылет в методе

Java
1
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
из за того что e2 равен null это для меня вообще мистика)

Похоже ничего не остается кроме WebView
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 11:39     Ссылки (<a href="LINK">XXX</a>) внутри ListView #6
KillAndEat, может просто добавить проверку для е2 на null?
Java
1
2
3
4
5
6
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
if (e2 == null) {
return false;
}
}
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 14:04  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #7
Netscape, в таком случае обработчик жестов теряет функциональность.

Заметил что все становится нормально если прокрутить лист вверх. Тогда оба MotionEvent не равны нулю. Мистика.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 14:15     Ссылки (<a href="LINK">XXX</a>) внутри ListView #8
Цитата Сообщение от KillAndEat Посмотреть сообщение
в таком случае обработчик жестов теряет функциональность.
А зачем ему обрабатывать жест, если юзер кликает по линку?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 14:37  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #9
Netscape, загрузить следующую страницу контента
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 14:40     Ссылки (<a href="LINK">XXX</a>) внутри ListView #10
Цитата Сообщение от KillAndEat Посмотреть сообщение
загрузить следующую страницу контента
что-то я не понимаю.
пагинация сделана через GestureDetector.SimpleOnGestureListener что ли?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 14:45  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #11
Netscape, ага=)

Добавлено через 4 минуты
можно как то по другому сделать ее?
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 15:02     Ссылки (<a href="LINK">XXX</a>) внутри ListView #12
KillAndEat, я бы сказал нужно)
На ListView вешаем OnScrollListener, дальше:
Java
1
2
3
4
5
6
7
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        int lastInScreen = firstVisibleItem + visibleItemCount;
        if ((lastInScreen == totalItemCount) && isLoadingMore && !isLoading) {
            isLoading = true; // пора загружать новые данные
        }
    }
Есть даже готовая либа:
https://github.com/nicolasjafelle/PagingListView
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 15:14  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #13
Netscape, как понимаю подгрузка будет происходить когда закончится прокрутка списка. Данные будут добавляться в уже имеющийся массив данных. Не вызовет ли это "тормоза" со временем из за слишком большого количества объектов в этом массиве?
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 15:20     Ссылки (<a href="LINK">XXX</a>) внутри ListView #14
Цитата Сообщение от KillAndEat Посмотреть сообщение
подгрузка будет происходить когда закончится прокрутка списка
Нет, когда юзер докрутит в самый низ списка:
но и это можно изменить в строчке:
if ((lastInScreen == totalItemCount) && isLoadingMore && !isLoading)
например так:
if ((lastInScreen > totalItemCount - 5) && isLoadingMore && !isLoading)
тогда, подгрузка начнется когда до конца списка будет еще 5 элементов.
Цитата Сообщение от KillAndEat Посмотреть сообщение
Не вызовет ли это "тормоза" со временем из за слишком большого количества объектов в этом массиве
Это уже зависит от того насколько эффективно будет написан адаптер. Юзать ViewHolder и тому подобное.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 15:27  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #15
Цитата Сообщение от Netscape Посмотреть сообщение
Нет, когда юзер докрутит в самый низ списка:
ну я это и имел ввиду) не правильно выразился.
Цитата Сообщение от Netscape Посмотреть сообщение
Юзать ViewHolder и тому подобное
это все есть, но все же)

Буду экспериментировать) А чем мой вариант пагинации плох, кроме имеющейся проблемы?)
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 15:31     Ссылки (<a href="LINK">XXX</a>) внутри ListView #16
Цитата Сообщение от KillAndEat Посмотреть сообщение
А чем мой вариант пагинации плох, кроме имеющейся проблемы?)
Он плох тем, что не предназначен для пагинации.
Это все равно что кофеваркой гвозди забивать)
Вроде как и можно, но предназначена она для другого.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 15:33  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #17
Netscape, для чего же он тогда нужен, этот обработчик жестов?)
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 15:36     Ссылки (<a href="LINK">XXX</a>) внутри ListView #18
Цитата Сообщение от KillAndEat Посмотреть сообщение
обработчик жестов?)
Жесты обрабатывать, естественно.
Свайпы, тап, дабл тап, скролл, и тому подобное. Т.е. инструмент универсальный и в этом конкретном случае его использование просто не оправдано.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
28.08.2014, 15:44  [ТС]     Ссылки (<a href="LINK">XXX</a>) внутри ListView #19
Netscape, это понятно что жесты. Просто конкретная ситуация интересует
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2014, 16:16     Ссылки (<a href="LINK">XXX</a>) внутри ListView
Еще ссылки по теме:

Получить доступ к TextView внутри ListView Android
Android "Attempt to re-open an already-closed object" при работе с SQLite
Android При прокрутке listview изображения подгружаются, но происходит "скачок" списка
EditText.Listener внутри ListView Android
Как добавить строку "." в начале в ListView со своим обработчиком Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.08.2014, 16:16     Ссылки (<a href="LINK">XXX</a>) внутри ListView #20
Цитата Сообщение от KillAndEat Посмотреть сообщение
Просто конкретная ситуация интересует
В каком смысле конкретная?
Вы просто выбрали неподходящий инструмент для решения задачи. Может он ее и решал, но добавил глюков, в результате чего некорректно работали ссылки.
Что я пропустил или не так понял?
Yandex
Объявления
28.08.2014, 16:16     Ссылки (<a href="LINK">XXX</a>) внутри ListView
Ответ Создать тему
Опции темы

Текущее время: 01:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru