الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في كود RSS Reader

بدأه The.Eagle في 10 يونيو 2013 · 1 رد · 921 مشاهدة · في Android
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم 
 

عملت 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){
			
		}
	}
}
#2

كان لديك مشكله فى الفئة RssParserHandler

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> rssItemList;
	private RssItem item = new RssItem();
	private String currentTag = "";

	public RssParserHandler() {
		rssItemList = new ArrayList<RssItem>();
	}

	public List<RssItem> getRssItemList() {
		return rssItemList;
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		if (localName.equals("item")) {
			item = new RssItem();
		} else if (localName.equals("title")) {
			currentTag = "title";
		} else if (localName.equals("link")) {
			currentTag = "link";
		}
	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if (localName.equals("item")) {
			rssItemList.add(item);
		} else if (localName.equals("link") || localName.equals("title")) {
			currentTag = "";
		}
	}

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		String data = new String(ch, start, length);
		if (currentTag.equals("title")) {
			item.setTitle(data);
		} else if (currentTag.equals("link")) {
			item.setLink(data);
		}
	}

}

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة