Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Создание RSS на базе Material Design - Программирование Android

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

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

На правильном ли я пути?
0
Миниатюры
Создание RSS на базе Material Design  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2015, 21:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание RSS на базе Material Design (Программирование Android):

Material design для api10 - Программирование Android
Доброй ночи! Пишу приложения с требованиями по build target API 10. Хотелось бы сделать в рамках новой концепции material design....

Material Design. Dialog с текстом - Программирование Android
Всем привет. Подскажите пожалуйста, есть ли аналог AlertDialog в Material Design, в котором вместо сообщения, помещается большое количество...

Правильное использование Material Design - Программирование Android
Добрый день! Как правильно использовать MAterial Design? Android 4.0 - Android 5.0.x Нормально ли использовать ...

Приложение-анкета по канонам material design - Программирование Android
Здравствуйте. Начинаю постигать андроид. До этого юзабельных приложений не создавал. Поставил перед собой такую задачу: написать...

Как создать вкладки Tabs c ViewPager material design - Программирование Android
Добрый день форумчане! Нужна ваша помощь! Как создать так называемый Tabs Вкладки с viewPager в API 21 (material design)? ...

Material Design. Можно ли экспортировать Skecth в андроид и что делать дальше? - Программирование Android
Я хочу реализовать красивый дизайн, я нашел scetch ресурс,его можно экспортировать,я читал про это, но как дальше взаимодействовать,...

20
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
20.07.2015, 19:31  [ТС] #16
Цитата Сообщение от Rube Посмотреть сообщение
Странный код, это точно html?
Можно убрать простым replace + regex или через remove в JSOUP.
Но это мне кажется комментарии. Они не должны отображаться в вебвью.
Ну, это часть кода с сайта по ссылке - https://progrou.wordpress.com/feed
Если не ошибаюсь, то это файл .xml
0
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
22.07.2015, 08:26  [ТС] #17
А вот такой вопрос.
Самому на своем сайте создать файл .xml и к нему привязать ссылку (чтобы знал ее только я). Написать код с нужными мне <title><item> и т.д. Не будет никаких лишних знаков.
Теоретически я смогу так сделать?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
22.07.2015, 10:49 #18
Тогда уж всю логику на своем сайте и писать.
А вообще этих читалок пруд пруди, лучше делать чего нет.
0
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
23.07.2015, 15:28  [ТС] #19
Цитата Сообщение от Rube Посмотреть сообщение
Тогда уж всю логику на своем сайте и писать.
А вообще этих читалок пруд пруди, лучше делать чего нет.
Мне не для читалки. Мне для себя нужно создать такую программу.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
23.07.2015, 15:37 #20
Я тоже типа того пишу сейчас, но качаю страницу, выкидываю лишнее, форматирую немножко и показываю в vebview.
0
NewSergik
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 15
23.07.2015, 16:49  [ТС] #21
Цитата Сообщение от Rube Посмотреть сообщение
Я тоже типа того пишу сейчас, но качаю страницу, выкидываю лишнее, форматирую немножко и показываю в vebview.
Тогда начну сначала. Прошу дочитать до конца. Потом буду короче писать Пока пытался разобраться с RSS, заметил главную ошибку.
Начальный шаблон был взят здесь
У меня есть список разделов (добавил их самостоятельно), которые отображены в activity_main.xml, а точнее в Navigation Drawer Menu. В шапке header я добавил ссылки на требуемые мне ресурсы (почта/смс/звонок/соцсеть).
При нажатии на один из разделов открывалась новая Activity №2. Это и есть грубая на мой взгляд ошибка.
При нажатии на раздел у меня не должно быть переключения между Activity. У меня должно закрыться Меню и список ссылок раздела должен отобразиться на экране MainActivity - главной активити.

Как пример, приложение ЯндексПочта. Нажимаем входящие/исходящие - открывается главное MainActivity. Нажимаем Настройки - открывается новое активити SettingActivity.

Сейчас в приложении реализована такая функция: при нажатии на раздел выводится текстовое название этого раздела на экране MainActivity.
Теперь вопрос. Как мне прикрутить к каждому разделу RSS ленту? Или правильнее, как сделать так, чтобы при нажатии на раздел открывались ссылки на "новости" этого раздела?

Повторюсь, я копировал RSS клиента вот здесь. И он удачно вписался в шаблон, но я запнулся на парсинге. И это уже вопрос дальнейшей разработки.

Это MainActivity.java
Javascript
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
package ru.gp.test8;
 
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity implements OnClickListener {
 
    DrawerLayout drawerLayout;
    Toolbar toolbar;
    ActionBar actionBar;
    TextView textView;
    ImageView imageSms;
    ImageView imageEmail;
    ImageView imageVk;
    ImageView imageTel;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        imageSms = (ImageView) findViewById(R.id.imageSms);
        imageEmail = (ImageView) findViewById(R.id.imageEmail);
        imageVk = (ImageView) findViewById(R.id.imageVk);
        imageTel = (ImageView) findViewById(R.id.imageTel);
 
        imageSms.setOnClickListener(this);
        imageEmail.setOnClickListener(this);
        imageVk.setOnClickListener(this);
        imageTel.setOnClickListener(this);
 
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        actionBar = getSupportActionBar();
        actionBar.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);
        actionBar.setDisplayHomeAsUpEnabled(true);
        /*actionBar.setLogo(R.drawable.ic_menu_logo); */
 
        drawerLayout = (DrawerLayout) findViewById(R.id.navigation_drawer_layout);
 
        NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
        if (navigationView != null) {
            setupNavigationDrawerContent(navigationView);
        }
    }
 
    @Override
    public void onClick(View v) {
        Intent Intent2;
        switch (v.getId()) {
            case R.id.imageSms:
                Intent2 = new Intent(Intent.ACTION_VIEW);
                Intent2.putExtra("sms_body", "");
                Intent2.putExtra("address", "+7920");
                Intent2.setType("vnd.android-dir/mms-sms");
                startActivity(Intent2);
                break;
            case R.id.imageEmail:
                Intent2 = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto","gp@gmail.com", null));
                Intent2.putExtra(Intent.EXTRA_SUBJECT, "");
                Intent2.putExtra(Intent.EXTRA_TEXT, "");
                startActivity(Intent2);
                break;
            case R.id.imageVk:
                Intent2= new Intent(Intent.ACTION_VIEW, Uri.parse("https://vk.com"));
                startActivity(Intent2);
                break;
            case R.id.imageTel:
                Intent2= new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + "+7920"));
                startActivity(Intent2);
                break;
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                drawerLayout.openDrawer(GravityCompat.START);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    private void setupNavigationDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) {
                        textView = (TextView) findViewById(R.id.textView);
                        switch (menuItem.getItemId()) {
                            case R.id.item_navigation_drawer_inbox:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
 
                            case R.id.item_Auto:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Magazin:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Razvlech:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Hobbi:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Deti:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Krasota:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Sport:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Turism:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Kultura:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Medicina:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Nedvigimost:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Stroyka:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Obrazovanie:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Uslugi:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Reklama:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Finans:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_Rabota:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_navigation_drawer_starred:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_navigation_drawer_sent_mail:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_navigation_drawer_drafts:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true;
                            case R.id.item_navigation_drawer_settings:
                                menuItem.setChecked(true);
                                textView.setText(menuItem.getTitle());
                                Toast.makeText(MainActivity.this, "Launching " + menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                                drawerLayout.closeDrawer(GravityCompat.START);
                                Intent intent = new Intent(MainActivity.this, FeedListActivity.class);
                                startActivity(intent);
                                return true;
                            /* case R.id.item_navigation_drawer_help_and_feedback:
                                menuItem.setChecked(true);
                                Toast.makeText(MainActivity.this, menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show();
                                drawerLayout.closeDrawer(GravityCompat.START);
                                return true; */
                        }
                        return true;
                    }
                });
    }
}
0
23.07.2015, 16:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 16:49
Привет! Вот еще темы с ответами:

Создание RSS реадера - Программирование Android
Я хочу прикрутить RSS ленту к pull to refresh Тоесть не выводить на екран всю ленту, а частями при перетягивании екрана не могу...

Material Drawer - Программирование Android
Здравствуйте, помогите, пожалуйста, разобраться: 1) создал тулбар с менюшкой, отлично работает, однако если добавить в разметку еще слой...

Как поставить тему Material? - Программирование Android
Я много раз пытался сделать это разными способами но ничего не получалось... Может вы подскажете?

Создание GPS навигатора на базе Android - Программирование Android
возможно ли использовать google api maps для создания нового навигатора?


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

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