السلام عليكم
عملت RSS Reader وما اشتغل معي
لا أعرف السبب
وهذا هو الكود
class RssReader
package com.example.rssreader;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class RssReader {
private String rssUrl ;
public RssReader (String rssUrl){
this.rssUrl = rssUrl;
}
public List<RssItem> getItem()throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
RssParserHandler handler = new RssParserHandler();
saxParser.parse(rssUrl , handler);
return handler.getItem();
}
}
class RssParserHandler
package com.example.rssreader;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
public class RssParserHandler extends DefaultHandler {
private List<RssItem> rssItem ;
// use to reference item while parssing
private RssItem currentItem;
// parsing title indicator
private boolean parsingTitle ;
// parsing Link indicator
private boolean parsingLink ;
public RssParserHandler(){
rssItem = new ArrayList<RssItem>();
}
public List<RssItem> getItem(){
return rssItem;
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if ("content-item".equals(qName)){
currentItem = new RssItem();
}
else if ("title".equals(qName)){
parsingTitle = true ;
}
else if ("url".equals(qName)){
parsingLink = true;
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if ("content-item".equals(qName)){
currentItem = null;
}
else if ("title".equals(qName)){
parsingTitle = false ;
}
else if ("url".equals(qName)){
parsingLink = false;
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (parsingTitle)
if (currentItem != null)
currentItem.setTitle(new String (ch , start , length));
else if (parsingLink){
if (currentItem != null ){
currentItem.setLink(new String (ch , start , length));
parsingLink = false;
}
}
}
}
class RssItem
package com.example.rssreader;
public class RssItem {
private String title ;
private String link ;
public void setTitle (String title){
this.title = title ;
}
public String getTitle(){
return this.title;
}
public void setLink (String link){
this.link = link ;
}
public String getLink (){
return this.link;
}
}
class ListListener
package com.example.rssreader;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.AdapterView;
public class ListListener {
List<RssItem> listItems;
Activity activity ;
public ListListener (List<RssItem> listItems , Activity activity ){
this.listItems = listItems;
this.activity = activity;
}
public void onItemClick (AdapterView<?> parent , View view , int pos , long id ){
Intent i = new Intent (Intent.ACTION_VIEW);
i.setData(Uri.parse(listItems.get(pos).getLink()));
activity.startActivity(i);
}
}
class main
package com.example.rssreader;
import android.app.Activity;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class main extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
RssReader rssReader = new RssReader("http://blog.01synergy.com/feed/");
ListView items = (ListView)findViewById(R.id.listView1);
// Creat List Adpater
ArrayAdapter<RssItem> adapter = new ArrayAdapter<RssItem>(this, android.R.layout.simple_list_item_1, rssReader.getItem());
// set list adpater for ListView
items.setAdapter(adapter);
// set listView item click listener
items.setOnItemClickListener(new ListListener(rssReader.getItem() ,this ));
}
catch(Exception ex){
}
}
}