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

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

Войти
Регистрация
Восстановить пароль
 
 
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
#1

Создание RSS на базе Material Design - Android

11.07.2015, 21:53. Просмотров 886. Ответов 20
Метки нет (Все метки)

Добрый день!
Подсел на тему Материал Дизайн. Уж очень она мне понравилась. Сам никогда не разрабатывал приложения под андроид, а тут вдруг решил попробовать свои знания. По примерам работ в других сферах получалось разобраться и "смастерить" свое чудо По аналогии всегда ведь легче, даже если и не знаешь ничего. Но это не суть.
Проблема меня постигла, когда решил в существующий пример воткнуть RSS-читалку.
По картинке (взял из интернета): Сейчас у меня есть только пункт 1. (меню с разделами). Пункт 2 - отображает список новостей по тематикам. Пункт 3 - открывает одну новость в выбранной тематике.
Правильно ли я понимаю, что для реализации двух других пунктов мне потребуются:
MainActivity.java - уже есть. Главная страница приложения.
ListActivity.java - будет открываться при выборе раздела в списке навигации (п.2).
DetailActivity.java - будет открывать подробную информацию по выбранной новости (п.3).
Handler.java - создам для обработки rss с сайта.

На правильном ли я пути?
Миниатюры
Создание RSS на базе Material Design  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
12.07.2015, 00:25     Создание RSS на базе Material Design #2
Да, все правильно, плюс минимум
PreferencesActivity.java - настройки
MyCursorAdapter.java - адаптер
DB.java - хранитель новостей
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
12.07.2015, 17:35  [ТС]     Создание RSS на базе Material Design #3
Цитата Сообщение от Rube Посмотреть сообщение
Да, все правильно, плюс минимум
PreferencesActivity.java - настройки
MyCursorAdapter.java - адаптер
DB.java - хранитель новостей
Отлично, это уже хорошо.
"PreferencesActivity.java - настройки" - что под ними подразумевается?
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
12.07.2015, 20:19  [ТС]     Создание RSS на базе Material Design #4
Нашел замечательный пример RSS в интернете. Как раз подходит к моему Материал Дизайн. Вставил код.
Запнулся на Responce:
Java
1
2
3
4
5
6
7
public class DataFragment extends Fragment implements Responce.Listener<Feed>, Response.ErrorListener {
    private Feed feed;
 
    private VolleySingleton volley;
 
    private FeedConsumer feedConsumer;
    private boolean isloading = false;
А в продолжении кода еще и isLoader высвечивается.
И подчеркнута строка Request.Method.GET, url, this, this

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void update() {
        if (feed == null && !isLoading()) {
            String url = getString(R.string.feed_url);
            volley.addToRequestQueue(new RssRequest(Request.Method.GET, url, this, this));
            isLoading = true;
        } else {
            if (feedConsumer != null) {
                feedConsumer.setFeed(feed);
            }
        }
    }
 
    public boolean isLoading() {
        return isLoading;
    }
Может ли быть причина в неправильном добавлении в библиотеку libs файла volley.jar ?
Миниатюры
Создание RSS на базе Material Design  
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
12.07.2015, 22:17     Создание RSS на базе Material Design #5
Цитата Сообщение от NewSergik Посмотреть сообщение
Нашел замечательный пример RSS в интернете. Как раз подходит к моему Материал Дизайн.
Эту цитату надо запомнить!
Цитата Сообщение от NewSergik Посмотреть сообщение
"PreferencesActivity.java - настройки" - что под ними подразумевается?
Приложение без настроек не бывает.
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
14.07.2015, 10:30  [ТС]     Создание RSS на базе Material Design #6
Цитата Сообщение от Rube Посмотреть сообщение
Эту цитату надо запомнить!

Приложение без настроек не бывает.
С настройками разобрался.
Какой совет дадите по ошибке "Request.Method.GET, url, this, this"
В коде я как плавающий камень
Паблито
2027 / 1769 / 549
Регистрация: 12.05.2014
Сообщений: 6,279
Завершенные тесты: 1
14.07.2015, 10:38     Создание RSS на базе Material Design #7
Цитата Сообщение от NewSergik Посмотреть сообщение
Какой совет дадите по ошибке "Request.Method.GET, url, this, this"
совет простой - копировать ошибку сюда полностью, а не пересказывать одной строчкой
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
14.07.2015, 13:17  [ТС]     Создание RSS на базе Material Design #8
Эх, нашел ошибку. Вместо Response написал Responce.
Но есть еще одна. Пока сам попытаюсь разобраться до вечера. Прошу тему не закрывать.
Спасибо за отзывчивость коллектива форума!
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 725
14.07.2015, 14:00     Создание RSS на базе Material Design #9
а как же "копировать ошибку сюда полностью, а не пересказывать одной строчкой"
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
14.07.2015, 14:35  [ТС]     Создание RSS на базе Material Design #10
Цитата Сообщение от Valakin Посмотреть сообщение
а как же "копировать ошибку сюда полностью, а не пересказывать одной строчкой"
еще не вечер ))
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
16.07.2015, 20:31  [ТС]     Создание RSS на базе Material Design #11
Продолжаю по затыкам.
Появляется ошибка при переходе с п.2 на п.3 (по картинке первого поста).
Как я понял, указывает она на строку:
Java
1
  html = html.replaceAll(NEWLINE, BR);
В чем может быть проблема?

Лог ошибок:
Код
07-16 17:18:10.214    2645-2645/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.gp.test8/ru.gp.test8.FeedDetailActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
            at android.app.ActivityThread.access$600(ActivityThread.java:130)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at ru.gp.test8.FeedDetailActivity.onCreate(FeedDetailActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5008)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
************at android.app.ActivityThread.access$600(ActivityThread.java:130)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
************at android.os.Handler.dispatchMessage(Handler.java:99)
************at android.os.Looper.loop(Looper.java:137)
************at android.app.ActivityThread.main(ActivityThread.java:4745)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:511)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
************at dalvik.system.NativeStart.main(Native Method)
FeedDetailActivity.java
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.gp.test8;
 
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
import android.webkit.WebView;
import android.widget.TextView;
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
 
import ru.gp.test8.rss.model.Item;
 
public class FeedDetailActivity extends Activity {
    public static final String ARG_ITEM = "ARG_ITEM";
    public static final String NEWLINE = "\\n";
    public static final String BR = "<br />";
    public static final String HTML_MIME_TYPE = "text/html";
 
    private DateFormat dateFormat = SimpleDateFormat.getDateInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.feed_detail);
 
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
 
        Item item = (Item) getIntent().getSerializableExtra(ARG_ITEM);
 
        TextView title = (TextView) findViewById(R.id.feed_detail_title);
        TextView date = (TextView) findViewById(R.id.feed_detail_date);
        WebView webView = (WebView) findViewById(R.id.feed_detail_body);
 
        title.setText(item.getTitle());
        date.setText(dateFormat.format(new Date(item.getPubDate())));
        String html = item.getContent();
 
        html = html.replaceAll(NEWLINE, BR);
        webView.loadData(html, HTML_MIME_TYPE, null);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        int id = menuItem.getItemId();
        if (id == android.R.id.home) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(menuItem);
    }
}
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
19.07.2015, 12:45  [ТС]     Создание RSS на базе Material Design #12
Пробую варианты подгрузки новостей.
Адрес, с которого у меня читается информация, находится в strings.
Проблема в следующем (см. картинку).
Кто поможет "убрать квадрат" и "сделать русский шрифт читабельным при переходе на п.3" ?

Тестируемый адрес №1:
Javascript
1
<string name="feed_url">https://progrou.wordpress.com/feed</string>
Итог:
п.2 - появляется четко. Только какой-то квадрат вылезает непонятный. Откуда он может быть?
п.3 - русский шрифт не отображается. И появилась ссылка на сайт. Все остальное идеально. В каком месте искать ошибку по шрифту и ссылке на сайт?
И еще не нравится, что все описание новости вставляется в п.2.

Тестируемый адрес №2:
Javascript
1
<string name="feed_url">http://progorod33.ru/rss.xml</string>
Итог:
п.2 - появляется четко. Снова квадрат вылезает непонятный. Откуда он может быть? Единственный плюс - идеальный размеры вывода на экран каждой новости, они все одинаковые.
п.3 - вылетает ошибка, как в предыдущем моем посте.

Тестируемый адрес №3:
Javascript
1
<string name="feed_url">http://ria.ru/export/rss2/moscow/index.xml</string>
Итог:
п.2 - без "квадрата" и это радует. Минус в разности ширине строк каждой новости.
п.3 - вылетает ошибка, как в предыдущем моем посте.
Миниатюры
Создание RSS на базе Material Design  
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
19.07.2015, 21:22     Создание RSS на базе Material Design #13
Цитата Сообщение от NewSergik Посмотреть сообщение
Кто поможет "убрать квадрат" и "сделать русский шрифт читабельным при переходе на п.3" ?
Смотри квадрат в коде страницы, открой ее в браузере и смотри элементы.
Русский шрифт - это кодировку копай.
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
20.07.2015, 08:10  [ТС]     Создание RSS на базе Material Design #14
По коду различие нашел - присутствует значение CDATA. Скорее всего, в моем случае она относится к рубрикам и подрубрикам.
Какие способы есть ее удалить из чтения?

XML
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
- <item>
  <title>Тест3</title> 
  <link>https://progrou.wordpress.com/2015/07/19/test3/</link> 
  <comments>https://progrou.wordpress.com/2015/07/19/test3/#comments</comments> 
  <pubDate>Sun, 19 Jul 2015 07:31:29 +0000</pubDate> 
- <dc:creator>
- <![CDATA[ Сергей
  ]]> 
  </dc:creator>
- <category>
- <![CDATA[ Без рубрики
  ]]> 
  </category>
  <guid isPermaLink="false">http://progrou.wordpress.com/?p=48</guid> 
- <description>
- <![CDATA[ Тест 3 добрый день Test 3 Hello brother<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=progrou.wordpress.com&blog=93578073&post=48&subd=progrou&ref=&feed=1" width="1" height="1" />
  ]]> 
  </description>
- <content:encoded>
- <![CDATA[ <p>Тест 3 добрый день</p>
<p>Test 3 Hello brother</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/progrou.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/progrou.wordpress.com/48/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=progrou.wordpress.com&blog=93578073&post=48&subd=progrou&ref=&feed=1" width="1" height="1" />
  ]]> 
  </content:encoded>
  <wfw:commentRss>https://progrou.wordpress.com/2015/07/19/test3/feed/</wfw:commentRss> 
  <slash:comments>0</slash:comments> 
- <media:content url="https://2.gravatar.com/avatar/2e8ec9f64ad81a11956c0bc25651af16?s=96&d=identicon&r=G" medium="image">
  <media:title type="html">qnoone</media:title> 
  </media:content>
  </item>
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
20.07.2015, 09:34     Создание RSS на базе Material Design #15
Странный код, это точно html?
Можно убрать простым replace + regex или через remove в JSOUP.
Но это мне кажется комментарии. Они не должны отображаться в вебвью.
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
20.07.2015, 19:31  [ТС]     Создание RSS на базе Material Design #16
Цитата Сообщение от Rube Посмотреть сообщение
Странный код, это точно html?
Можно убрать простым replace + regex или через remove в JSOUP.
Но это мне кажется комментарии. Они не должны отображаться в вебвью.
Ну, это часть кода с сайта по ссылке - https://progrou.wordpress.com/feed
Если не ошибаюсь, то это файл .xml
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
22.07.2015, 08:26  [ТС]     Создание RSS на базе Material Design #17
А вот такой вопрос.
Самому на своем сайте создать файл .xml и к нему привязать ссылку (чтобы знал ее только я). Написать код с нужными мне <title><item> и т.д. Не будет никаких лишних знаков.
Теоретически я смогу так сделать?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.07.2015, 10:49     Создание RSS на базе Material Design #18
Тогда уж всю логику на своем сайте и писать.
А вообще этих читалок пруд пруди, лучше делать чего нет.
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
23.07.2015, 15:28  [ТС]     Создание RSS на базе Material Design #19
Цитата Сообщение от Rube Посмотреть сообщение
Тогда уж всю логику на своем сайте и писать.
А вообще этих читалок пруд пруди, лучше делать чего нет.
Мне не для читалки. Мне для себя нужно создать такую программу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 15:37     Создание RSS на базе Material Design
Еще ссылки по теме:

Android Как подключить com.android.support:design в Eclipse
Android Material Design. Можно ли экспортировать Skecth в андроид и что делать дальше?
Android Material Drawer
Как поставить тему Material? Android
Приложение-анкета по канонам material design Android

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

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.07.2015, 15:37     Создание RSS на базе Material Design #20
Я тоже типа того пишу сейчас, но качаю страницу, выкидываю лишнее, форматирую немножко и показываю в vebview.
Yandex
Объявления
23.07.2015, 15:37     Создание RSS на базе Material Design
Ответ Создать тему
Опции темы

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