Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > Mobile > Mobile Forum > Android - ผมทำการดึง rss feed (ข่าว) อ่ะครับ แต่พอกดรันแล้วปรากฎว่า ข่าวไม่มาแสดงที่ listview อ่ะครับ รบกวนพี่ๆช่วยแนะนำหน่อยครับ ขอบคุณครับ



 

Android - ผมทำการดึง rss feed (ข่าว) อ่ะครับ แต่พอกดรันแล้วปรากฎว่า ข่าวไม่มาแสดงที่ listview อ่ะครับ รบกวนพี่ๆช่วยแนะนำหน่อยครับ ขอบคุณครับ

 



Topic : 109146



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์




คือว่าผมทำการดึง rss อ่ะครับ แล้วพอกด loadxml มันไม่แสดงที่ listview ให้อ่ะครับ

Code (Android-Java)
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class News_1 extends Activity {

	private Context context;
	private Button loadxml;
	private ListView listview;

	private Thread thread;
	private Handler handler;

	private MylistViewAdapter mylistViewAdapter;
	private ArrayList<channel> data = new ArrayList<News_1.channel>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.news_1);

		context = this;
		loadxml = (Button) findViewById(R.id.btngetnews);
		listview = (ListView) findViewById(R.id.listView_news1);

		mylistViewAdapter = new MylistViewAdapter();
		listview.setAdapter(mylistViewAdapter);

		handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);

				switch (msg.what) {
				case 0:
					Toast.makeText(context, "Load failed", Toast.LENGTH_SHORT)
							.show();
					break;
				case 1:
					Toast.makeText(context, "Load completed",
							Toast.LENGTH_SHORT).show();
					data = (ArrayList<channel>) msg.obj;
					mylistViewAdapter.notifyDataSetChanged();
					break;
				}
			}
		};

		loadxml.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// load xml document
				thread = new Thread(new MySaxParser());
				thread.start();
			}
		});
	}

	//
	private class MySaxParser implements Runnable {// Read xml

		@Override
		public void run() {
			SAXParserFactory spf = SAXParserFactory.newInstance();
			Message message = new Message();
			message.what = 0;

			try {// Read

				SAXParser sp = spf.newSAXParser();
				XMLReader xmlreader = sp.getXMLReader();

				MyXMLHandler myXMLHandler = new MyXMLHandler();

				xmlreader.setContentHandler(myXMLHandler);
				xmlreader.parse(new InputSource(new URL(// Read from url
						"http://www.nationchannel.com/rss/kabtokjaknation.xml")
						.openStream()));

				message.what = 1;
				message.obj = myXMLHandler.getData();

			} catch (ParserConfigurationException e) {
				e.printStackTrace();
			} catch (SAXException e) {
				e.printStackTrace();
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			handler.sendMessage(message);// load complete fail
		}

	}

	private class MylistViewAdapter extends BaseAdapter {

		private ViewHolder viewholder;

		@Override
		public int getCount() {
			return data.size();
		}

		@Override
		public Object getItem(int arg0) {
			return null;
		}

		@Override
		public long getItemId(int arg0) {
			return 0;
		}

		@Override
		public View getView(int position, View view, ViewGroup parent) {

			if (view == null) {
				view = LayoutInflater.from(context).inflate(R.layout.lv_news1,
						null);
				viewholder = new ViewHolder();

				viewholder.title = (TextView) view.findViewById(R.id.txtTitle);
				viewholder.pubDate = (TextView) view
						.findViewById(R.id.txtpubDate);
				viewholder.description = (TextView) view
						.findViewById(R.id.txtdescription);
				viewholder.link = (TextView) view.findViewById(R.id.txtlink);
				view.setTag(viewholder);
			} else {

				viewholder = (ViewHolder) view.getTag();
			}

			viewholder.title.setTag(data.get(position).getTitle());
			viewholder.description.setTag(data.get(position).getDescription());
			viewholder.link.setTag(data.get(position).getLink());
			viewholder.pubDate.setTag(data.get(position).getPubDate());
			return view;
		}

		private class ViewHolder {
			public TextView title, description, link, pubDate;
		}

	}

	public class MyXMLHandler extends DefaultHandler {

		private ArrayList<channel> data = new ArrayList<News_1.channel>();
		private channel temp;
		private String currentValue;// เก็บค่าที่ อ่านเข้ามา

		public ArrayList<channel> getData() {
			return this.data;// ส่งค่าที่เก็บไปให้ data

		}

		public void setData(ArrayList<channel> data) {
			this.data = data;
		}

		@Override
		public void startElement(String uri, String localName, String qName,
				Attributes attributes) throws SAXException {
			super.startElement(uri, localName, qName, attributes);

			if (localName.equalsIgnoreCase("channel")) {
				temp = new channel();
			}
		}

		@Override
		public void endElement(String uri, String localName, String qName)
				throws SAXException {
			super.endElement(uri, localName, qName);

			if (localName.equalsIgnoreCase("title")) {
				temp.setTitle(currentValue);
			} else if (localName.equalsIgnoreCase("description")) {
				temp.setDescription(currentValue);
			} else if (localName.equalsIgnoreCase("link")) {
				temp.setLink(currentValue);
			} else if (localName.equalsIgnoreCase("pubDate")) {
				temp.setPubDate(currentValue);
			} else if (localName.equalsIgnoreCase("channel")) {
				data.add(temp);
			}
		}

		@Override
		public void characters(char[] ch, int start, int length)
				throws SAXException {
			super.characters(ch, start, length);

			currentValue = new String(ch, start, length);
		}
	}

	public class channel extends Object {// เก็บข้อมูล channel..

		private String title;
		private String description;
		private String link;
		private String pubDate;

		public String getTitle() {
			return title;
		}

		public void setTitle(String title) {
			this.title = title;
		}

		public String getDescription() {
			return description;
		}

		public void setDescription(String description) {
			this.description = description;
		}

		public String getLink() {
			return link;
		}

		public void setLink(String link) {
			this.link = link;
		}

		public String getPubDate() {
			return pubDate;
		}

		public void setPubDate(String pubDate) {
			this.pubDate = pubDate;
		}

	}

}




Tag : Mobile, Android, Mobile









ประวัติการแก้ไข
2014-06-12 22:01:04
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-06-12 21:50:25 By : joecomscience View : 1268 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ได้ลอง Debug ดูหรือเปล่าครับ มันทำเงื่อนไขตรงไหน หรือหลุดในส่วนของ thread = new Thread(new MySaxParser()); หรือไม่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-13 09:22:36 By : mr.win
 


 

No. 2



โพสกระทู้ ( 98 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

Error อะไรอะครับ

อ่อ แล้วตรงเมธอด getView() ของคลาส MylistViewAdapter ตรง viewHolder.xxx.setTag() จะเซตค่าให้ TextView ต้องเป็น setText() นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-13 09:34:40 By : devahoy
 

 

No. 3



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์


ได้ลอง Debug ดูหรือเปล่าครับ มันทำเงื่อนไขตรงไหน หรือหลุดในส่วนของ thread = new Thread(new MySaxParser()); หรือไม่

==
ลองแล้วครับ แต่ตอน set ให้มันไปแสดงที่หน้า listview มันไม่ยอมมาอ่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-15 23:53:14 By : joecomscience
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Android - ผมทำการดึง rss feed (ข่าว) อ่ะครับ แต่พอกดรันแล้วปรากฎว่า ข่าวไม่มาแสดงที่ listview อ่ะครับ รบกวนพี่ๆช่วยแนะนำหน่อยครับ ขอบคุณครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่