Полезные примеры Android

Полезные примеры Android
Android — RSS-ридер

RSS расшифровывается как Really Simple Syndication. RSS — это простой способ делиться обновлениями и контентом вашего веб-сайта с вашими пользователями, чтобы пользователям не приходилось посещать ваш сайт ежедневно для каких-либо обновлений.

RSS Пример

RSS — это документ, который создается веб-сайтом с расширением .xml. Вы можете легко проанализировать этот документ и показать его пользователю в своем приложении. RSS-документ выглядит так.

<rss version="2.0">
<channel>
<title>Sample RSS</title>
<link>http://www.google.com</link>
<description>World's best search engine</description>
</channel>
</rss>

RSS-элементы

Такой RSS-документ, как указано выше, имеет следующие элементы.

Sr.No Компонент и описание
1

channel

Этот элемент используется для описания RSS-канала.

2

title

Определяет название канала

3

link

Определяет гиперссылку на канал

4

description

Описывает канал

Разбор RSS

Анализ RSS-документа больше похож на синтаксический анализ XML. Итак, теперь давайте посмотрим, как анализировать XML-документ.

Для этого мы создадим объект XMLPullParser, но для его создания мы сначала создадим объект XmlPullParserFactory, а затем вызовем его метод newPullParser () для создания XMLPullParser. Его синтаксис приведен ниже —

private XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
private XmlPullParser myparser = xmlFactoryObject.newPullParser();

Следующий шаг включает указание файла для XmlPullParser, который содержит XML. Это может быть файл или поток. В нашем случае это поток, его синтаксис приведен ниже —

myparser.setInput(stream, null);

Последний шаг — разобрать XML. Файл XML состоит из событий, имени, текста, значения атрибутов и т. Д. Итак, XMLPullParser имеет отдельную функцию для анализа каждого компонента файла XML. Его синтаксис приведен ниже —

int event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT)  {
String name=myParser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if(name.equals("temperature")){
temperature = myParser.getAttributeValue(null,"value");
}
break;
}		 
event = myParser.next(); 					
}

Метод getEventType возвращает тип происходящего события. например: начало документа, начало тега и т. д. Метод getName возвращает имя тега, и, поскольку нас интересует только температура, мы просто проверяем в условном выражении, что если у нас есть тег температуры, мы вызываем метод getAttributeValue, чтобы вернуть нам значение тега температуры.

Помимо этих методов, этот класс предоставляет другие методы для лучшего анализа файлов XML. Эти методы перечислены ниже —

Sr.No Метод и описание
1

getAttributeCount ()

Этот метод просто возвращает количество атрибутов текущего начального тега.

2

getAttributeName(int index)

Этот метод возвращает имя атрибута, указанного значением индекса.

3

getColumnNumber ()

Этот метод возвращает Возвращает текущий номер столбца, начиная с 0.

4

getDepth ()

Этот метод возвращает. Возвращает текущую глубину элемента.

5

getLineNumber ()

Возвращает текущий номер строки, начиная с 1.

6

getNamespace ()

Этот метод возвращает URI пространства имен текущего элемента.

7

getPrefix ()

Этот метод возвращает префикс текущего элемента.

8

getName ()

Этот метод возвращает имя тега.

9

getText ()

Этот метод возвращает текст для этого конкретного элемента.

10

isWhitespace ()

Этот метод проверяет, содержит ли текущее событие TEXT только символы пробела.

Пример

Вот пример, демонстрирующий использование класса XMLPullParser. Он создает базовое приложение синтаксического анализа, которое позволяет анализировать RSS-документ, представленный здесь в /android/sampleXML.xml, а затем отображать результат.

Чтобы поэкспериментировать с этим примером, вы можете запустить это на реальном устройстве или в эмуляторе.

Шаги Описание
1 Вы будете использовать Android studio для создания Android-приложения в пакете com.example.sairamkrishna.myapplication.
2 Измените файл src / MainActivity.java, чтобы добавить необходимый код.
3 Измените res / layout / activity_main, чтобы добавить соответствующие компоненты XML.
4 Создайте новый файл java в src / HandleXML.java для извлечения и анализа данных XML.
5 Создайте новый файл java в src / second.java для отображения результата XML
5 Измените AndroidManifest.xml, чтобы добавить необходимое разрешение в Интернете.
6 Запустите приложение, выберите работающее устройство Android, установите на него приложение и проверьте результаты.

Ниже приводится содержимое измененного файла основной деятельности src / MainActivity.java .

package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText title,link,description;
Button b1,b2;
private String finalUrl="http://tutorialspoint.com/android/sampleXML.xml";
private HandleXML obj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
title = (EditText) findViewById(R.id.editText);
link = (EditText) findViewById(R.id.editText2);
description = (EditText) findViewById(R.id.editText3);
b1=(Button)findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
obj = new HandleXML(finalUrl);
obj.fetchXML();
while(obj.parsingComplete);
title.setText(obj.getTitle());
link.setText(obj.getLink());
description.setText(obj.getDescription());
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in=new Intent(MainActivity.this,second.class);
startActivity(in);
}
});
}
}

Ниже приводится содержимое java-файла src / HandleXML.java .

package com.example.rssreader;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.util.Log;
public class HandleXML {
private String title = "title";
private String link = "link";
private String description = "description";
private String urlString = null;
private XmlPullParserFactory xmlFactoryObject;
public volatile boolean parsingComplete = true;
public HandleXML(String url){
this.urlString = url;
}
public String getTitle(){
return title;
}
public String getLink(){
return link;
}
public String getDescription(){
return description;
}
public void parseXMLAndStoreIt(XmlPullParser myParser) {
int event;
String text=null;
try {
event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
String name=myParser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.TEXT:
text = myParser.getText();
break;
case XmlPullParser.END_TAG:
if(name.equals("title")){
title = text;
}
else if(name.equals("link")){
link = text;
}
else if(name.equals("description")){
description = text;
}
else{
}
break;
}
event = myParser.next(); 
}
parsingComplete = false;
}
catch (Exception e) {
e.printStackTrace();
}
}
public void fetchXML(){
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
InputStream stream = conn.getInputStream();
xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser myparser = xmlFactoryObject.newPullParser();
myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
myparser.setInput(stream, null);
parseXMLAndStoreIt(myparser);
stream.close();
}
catch (Exception e) {
}
}
});
thread.start(); 
}
}

Создайте файл с именем second.java в каталоге java / second.java.

package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class second extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
WebView w1=(WebView)findViewById(R.id.webView);
w1.loadUrl("http://tutorialspoint.com/android/sampleXML.xml");
}
}

Создайте XML-файл в res / layout / second_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:layout_gravity="center_horizontal" />
</LinearLayout>

Измените содержимое res / layout / activity_main.xml на следующее:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:transitionGroup="true">
<TextView android:text="RSS example" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:theme="@style/Base.TextAppearance.AppCompat" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/imageView"
android:hint="Tittle"
android:textColorHint="#ff69ff0e"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:textColorHint="#ff21ff11"
android:hint="Link"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/editText2"
android:layout_alignLeft="@+id/editText2"
android:layout_alignStart="@+id/editText2"
android:hint="Description"
android:textColorHint="#ff33ff20"
android:layout_alignRight="@+id/editText2"
android:layout_alignEnd="@+id/editText2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fetch"
android:id="@+id/button"
android:layout_below="@+id/editText3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@+id/imageView"
android:layout_toStartOf="@+id/imageView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Result"
android:id="@+id/button2"
android:layout_alignTop="@+id/button"
android:layout_alignRight="@+id/editText3"
android:layout_alignEnd="@+id/editText3" />
</RelativeLayout>

Измените файл res / values ​​/ string.xml следующим образом

<resources>
<string name="app_name">My Application</string>
</resources>

Это AndroidManifest.xml по умолчанию .

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".second"></activity>
</application>
</manifest>

Попробуем запустить ваше приложение. Я предполагаю, что вы создали свой AVD при настройке среды. Чтобы запустить приложение из студии Android, откройте один из файлов активности вашего проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Студия Android устанавливает приложение на ваш AVD и запускает его, и если все в порядке с вашей настройкой и приложением, оно отобразит следующее окно эмулятора —

Учебное пособие по Anroid Rss Reader

Просто нажмите кнопку Fetch Feed, чтобы загрузить RSS-канал. После нажатия появится следующий экран, на котором будут показаны данные RSS.

Руководство по Android RSS Reader

Просто нажмите кнопку результата, чтобы увидеть XML, который находится по адресу http://tutorialspoint.com/android/sampleXML.xml.

Руководство для чтения RSS Android

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare