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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
#1

Парсинг сайта новостей - Android

27.09.2013, 12:12. Просмотров 2896. Ответов 8
Метки нет (Все метки)

Здравствуйте, уважаемые!

В приложении Android пытаюсь вывести новости с сайта новостей в ListView
Новости выводятся, но без активных ссылок.
Подскажите как доработать прилагаемый код, чтобы по нажатии на новость она (новость) загружалась в браузере в виде страницы HTML

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
package ru.sample.study;
 
import android.app.Activity;
import android.os.Bundle;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import android.widget.ListView;
import android.widget.ArrayAdapter;
 
public class MainScreen extends Activity
{
    ArrayList<String> mData =  new ArrayList<String>();
    ListView mListView;
    ArrayAdapter<String> mAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        mListView = (ListView) findViewById(R.id.listView);
 
        processData();
 
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, mData);
        mListView.setAdapter(mAdapter);
    }
 
    private void processData() {
        String URL = "http://www.top68.ru/policy/";
        
        
        
        try {
            Document doc = Jsoup.connect(URL).get();
            Elements questions = doc.select("h3 > a[href]");
            
            
            
            for(Element question: questions) {
                mData.add(question.text());
            }
            
            if(mData.size() == 0) {
                mData.add("Empty result");
            }
 
        } catch (Exception ex) {
            ex.printStackTrace();
            mData.clear();
            mData.add("Exception: " + ex.toString());
        }
    }
}
Заранее благодарен
ALSHA
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.09.2013, 12:59     Парсинг сайта новостей #2
Создать новое активити c WebView и туда загружать URL новости или кусок HTML кода. Или к обработчику нажитий привязать интент

Java
1
2
3
4
String url = "http://www.google.com";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
27.09.2013, 13:02     Парсинг сайта новостей #3
Тут как минимум нужен класс который описывает новость.
Java
1
2
3
4
class News {
private name; // название новости
private url; // ссылка
}
Дальше, нужно распарсить новости, и создать список объектов класса News. Потом создать кастомный адаптер для списка, и по клику на элемент списка брать позицию, дальше выбрать по этой позиции объект, взять у него поле url и запустить браузер, как вам подсказали выше.
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
27.09.2013, 13:23  [ТС]     Парсинг сайта новостей #4
Спасибо большое, что ответили....
Немного дополню вопрос.
А как вывести новости в ListView чтобы они УЖЕ были ссылками (подчеркнутый текст).

Заранее благодарен
ALSHA
Salty_Sugar
26 / 26 / 1
Регистрация: 02.04.2012
Сообщений: 140
27.09.2013, 13:31     Парсинг сайта новостей #5
Сделайте вебвью. Парсите сайт. Перегоняете в хтмл-текст. Мб вебвью не увидит ссылку. Тогда вставляете "http://www.top68.ru/policy" в
HTML5
1
<a href="/someNews"
, чтобы было
HTML5
1
<a href="http://www.top68.ru/policy/someNews"
Птом делаете
Java
1
webView.loadDatawithBaseUrl(null, yourHtmlDocument, "html/text", "utf-8", null);
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
27.09.2013, 13:49  [ТС]     Парсинг сайта новостей #6
Цитата Сообщение от Salty_Sugar Посмотреть сообщение
Сделайте вебвью. Парсите сайт. Перегоняете в хтмл-текст. Мб вебвью не увидит ссылку. Тогда вставляете "http://www.top68.ru/policy" в
HTML5
1
<a href="/someNews"
, чтобы было
HTML5
1
<a href="http://www.top68.ru/policy/someNews"
Птом делаете
Java
1
webView.loadDatawithBaseUrl(null, yourHtmlDocument, "html/text", "utf-8", null);
Да..... я думал можно сделать попроще

И текст HTML всего-то
<h3 class="title"><a href="http://www.top68.ru/policy/vrucheny-udostovereniya-25625">Вручены удостоверения</a>
Из него надо взять - Вручены удостоверения -
в виде ссылки на - http://www.top68.ru/policy/vrucheny-...vereniya-25625 -
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.09.2013, 13:56     Парсинг сайта новостей #7
ALSHA, зачем вам в листе УЖЕ ссылка? Отображайте в итеме листа название новости , дату добавление и прочее. C помощью Jsoup выдирайте кусок нужного HTML кода. И загружайте его в WebView как показал Salty_Sugar, вот и все. Если новость проcтая можно загрузить в TextView
ALSHA
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 15
27.09.2013, 14:18  [ТС]     Парсинг сайта новостей #8
Цитата Сообщение от KillAndEat Посмотреть сообщение
ALSHA, зачем вам в листе УЖЕ ссылка? Отображайте в итеме листа название новости , дату добавление и прочее. C помощью Jsoup выдирайте кусок нужного HTML кода. И загружайте его в WebView как показал Salty_Sugar, вот и все. Если новость проcтая можно загрузить в TextView

Спасибо за советы....

И все-таки, можно ли так сделать, чтобы новость в ListView уже показывалась в виде ссылки???

Извините за вопросы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 14:45     Парсинг сайта новостей
Еще ссылки по теме:

Парсинг сайта Android
Оптимизация списка новостей Android
Android Парсинг сайта и кодировка
Jsoup парсинг сайта Android
Android Приложение для Android [Постер новостей]

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

Или воспользуйтесь поиском по форуму:
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
27.09.2013, 14:45     Парсинг сайта новостей #9
ALSHA, можно то можно, но когда вы тыкните на такую ссылку браузер автоматом не откроется. Запустится обработчик нажатий листа, а в нем уже соответственно нужно описать что делать этом случае. Если туда воткнуть код который я привел выше то будет запускаться браузер.

Добавлено через 7 минут
Если хотите чтоб были именно ссылки. То можно заменить лист на скролящийся TextView, вырвать все нужные ссылки с помощью Jsoup, и все это запихнуть в TextView при помощи класса Html и его метода fromHtml. Как то так)
Yandex
Объявления
27.09.2013, 14:45     Парсинг сайта новостей
Ответ Создать тему
Опции темы

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