안드로이드 개발 질문/답변
(글 수 40,700)
현재 RSS 파싱 해서 안펍 앱 같은 걸 만들려고 하는데요.
지금 리스트 뷰에 제목 추가하는 건 되는데 각 항목마다 링크 거는 법을 아무리 찾아봐도 나오지를 않네요..
이게 소스입니다..
아시는 분 답변 좀 부탁드립니다.
그리고 현재 제 블로그rss로 하고는 있는데..
제가 하고 싶은 rss가.
http://www.yyg.go.kr/open_content/organization/military_news/efocus/rss
이건데..
돌리면 FileExcpetion이 납니다.
혹시 파싱 하는법 아시는 분 좀 알려주세요...
지금 리스트 뷰에 제목 추가하는 건 되는데 각 항목마다 링크 거는 법을 아무리 찾아봐도 나오지를 않네요..
package pack.ggogun.yyg; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import xmlParse.xmlParses; import android.R.bool; import android.R.string; import android.app.Activity; import android.app.TabActivity; import android.graphics.Color; import android.os.Bundle; import android.text.Html; import android.util.Log; import android.util.Xml; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TabHost; import android.widget.TextView; import android.widget.Toast; public class yygnotice extends TabActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost = getTabHost(); TabHost.TabSpec spec; //xmlParses xml = new xmlParses(); Log.d("PBS","go the parsing"); ArrayList<String> strs=new ArrayList<String>(); String str, url_text; try { //파서 URL url = new URL("http://ggogunbm.tistory.com/rss"); InputStream is = url.openConnection().getInputStream(); XmlPullParser parser = Xml.newPullParser(); parser.setInput(is, null); //InputStream is = url.openStream(); int parserEvent = parser.getEventType(); while (true) { int type=parser.next(); //다큐먼트시작 if (type==XmlPullParser.START_DOCUMENT) { // str="type=START_DOCUMENT"+ // ",text="+parser.getText()+ // ",depth="+parser.getDepth() + "name : " + parser.getName(); // strs.add(str); // Log.d("PBS",str); } //태그시작 else if (type==XmlPullParser.START_TAG) { // str="type=START_TAG"+ // ",text="+parser.getText()+ // ",depth="+parser.getDepth()+ "name : " + parser.getName(); // strs.add(str); //Log.d("PBS",str); //속성 // str=" attribute,"; // for (int i=0;i<parser.getAttributeCount();i++) { // str+=parser.getAttributeName(i)+"="+parser.getAttributeValue(i)+","; // strs.add(str); // } if(parser.getName().equals("title") && parser.getDepth() == 4){ parser.next(); str="Title is"+ ",text="+parser.getText(); Log.d("PBS",str); strs.add(str); } } //텍스트 else if (type==XmlPullParser.TEXT) { // str="type=TEXT"+ // ",text="+parser.getText()+ // ",depth="+parser.getDepth()+ "name : " + parser.getName(); // strs.add(str); // Log.d("PBS",str + " 1"); } //태그종료 else if (type==XmlPullParser.END_TAG) { // str="type=END_TAG"+ // ",text="+parser.getText()+ // ",depth="+parser.getDepth(); // strs.add(str); //Log.d("PBS",str + " 1"); } //다큐먼트종료 else if (type==XmlPullParser.END_DOCUMENT) { // str="type=END_DOCUMENT"+ // ",text="+parser.getText()+ // ",depth="+parser.getDepth(); break; } } } catch (Exception e) { Log.e("PBS","error : " + e.toString()); Log.d("PBS","go the failse"); } /* try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setValidating(false); XmlPullParser myxml = factory.newPullParser(); InputStream raw = getApplicationContext().getAssets().open("http://www.yyg.go.kr/open_content/organization/military_news/efocus/rss"); myxml.setInput(raw, null); int eventType = myxml.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_DOCUMENT) { Log.d("PBS", "In start document"); } else if(eventType == XmlPullParser.START_TAG) { Log.d("PBS", "In start tag = "+myxml.getName()); } else if(eventType == XmlPullParser.END_TAG) { Log.d("PBS", "In end tag = "+myxml.getName()); } else if(eventType == XmlPullParser.TEXT) { Log.d("PBS", "Have text = "+myxml.getText()); } eventType = myxml.next(); } } catch (XmlPullParserException e) { Log.d("PBS", "exception"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d("PBS", "ioexception"); } */ // 첫 번째 탭 spec = tabHost.newTabSpec( "Tab 01" ); spec.setIndicator( "영양포커스", getResources().getDrawable( R.drawable.icon ) ); spec.setContent( R.id.TabView1 ); tabHost.addTab( spec ); tabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#734512")); // 탭 색 지정 ArrayList<String> listArrray = new ArrayList<String>(); listArrray.add("김유신"); listArrray.add("이순신"); listArrray.add("강감찬"); listArrray.add("을지문덕"); final ArrayAdapter<String> adapter; adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strs); final ListView list = (ListView) findViewById(R.id.TabView2); list.setAdapter(adapter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView listview, View view, int position, long id) { // TODO Auto-generated method stub Toast awesomeToast = Toast.makeText(yygnotice.this, adapter.getItem(position),Toast.LENGTH_SHORT); awesomeToast.show(); } }); // 두 번째 탭 spec = tabHost.newTabSpec( "Tab 02" ); spec.setIndicator( "자유게시판" ); spec.setContent( R.id.TabView2 ); tabHost.addTab( spec ); // 세 번째 탭 spec = tabHost.newTabSpec( "Tab 03" ); spec.setIndicator( "지역정보모니터" ); spec.setContent( R.id.TabView3 ); tabHost.addTab( spec ); tabHost.setCurrentTab( 1 ); } }
이게 소스입니다..
아시는 분 답변 좀 부탁드립니다.
그리고 현재 제 블로그rss로 하고는 있는데..
제가 하고 싶은 rss가.
http://www.yyg.go.kr/open_content/organization/military_news/efocus/rss
이건데..
돌리면 FileExcpetion이 납니다.
혹시 파싱 하는법 아시는 분 좀 알려주세요...