그런데 XML 파싱 화면이 뜨고 로딩 화면이 그 다음에 뜹니다
혹시 코드상에서 잘못된 것이 있는지 봐주시면 감사하겠습니다
< 메인 엑티비티 >
public class MainActivity extends TabActivity
{
public TabHost tabHost;
public TabHost.TabSpec spec;
public Intent intent;
public Resources res;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startActivity(new Intent(this, SplashActivity.class));
res = getResources();
tabHost = getTabHost();
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("뉴스").setContent(new Intent(this, NewsActivity.class)));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("달력").setContent(new Intent(this, CalendarActivity.class)));
setTitle("NSecurity");
}
}
< xml 파싱 엑티비티 >
public class NewsActivity extends ListActivity implements OnItemClickListener
{
ArrayAdapter<NewsList> arrAdapter;
final ArrayList<NewsList> newsList = new ArrayList<NewsList>();
final ArrayList<NewsList> sort_newsList = new ArrayList<NewsList>();
Vector<String> titlevec = new Vector<String>();
Vector<String> linkevec = new Vector<String>();
Vector<String> authorevec = new Vector<String>();
Vector<String> timeevec = new Vector<String>();
NewsContent newscontent = new NewsContent();
private static final Comparator<NewsList> myComparator = new Comparator<NewsList>()
{
private final Collator collator = Collator.getInstance();
@Override
public int compare(NewsList object1, NewsList object2)
{
return collator.compare(object1.getTime(), object2.getTime());
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
newscontent.execute(null, null, null);
while (true)
{
try
{
Thread.sleep(5000);
if (newscontent.flag == true)
{
titlevec = newscontent.titlevec;
linkevec = newscontent.linkevec;
authorevec = newscontent.authorevec;
timeevec = newscontent.timeevec;
break;
}
}
catch (Exception e)
{
}
}
for (int i = 0; i < titlevec.size(); i++)
{
newsList.add(new NewsList(titlevec.get(i), authorevec.get(i), timeevec.get(i), linkevec.get(i)));
}
for (int i = 0; i < newsList.size(); i++)
{
sort_newsList.add(newsList.get(i));
}
Collections.sort(sort_newsList, myComparator);
Collections.reverse(sort_newsList);
arrAdapter = new NewsArrayAdpter(this, R.layout.news_list, R.id.news_title, sort_newsList);
// arrAdapter.sort();
setListAdapter(arrAdapter);
ListView lv = getListView();
lv.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
String content = sort_newsList.get(arg2).getLink();
Intent intent = new Intent(getBaseContext(), Content.class);
intent.putExtra("content", content);
startActivity(intent);
}
private class NewsArrayAdpter extends ArrayAdapter<NewsList>
{
private ArrayList<NewsList> newsList;
private int rsrc;
public NewsArrayAdpter(Context ctx, int rsrcId, int txtId, ArrayList<NewsList> list)
{
super(ctx, rsrcId, txtId, list);
// TODO 자동 생성된 생성자 스텁
this.newsList = list;
this.rsrc = rsrcId;
}
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null)
{
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(rsrc, null);
}
NewsList e = newsList.get(position);
if (e != null)
{
((TextView) v.findViewById(R.id.news_title)).setText(e.getTitle().toString());
((TextView) v.findViewById(R.id.news_author)).setText(e.getAuthor().toString());
((TextView) v.findViewById(R.id.news_time)).setText(e.getTime().toString());
}
return v;
}
}
private class NewsContent extends AsyncTask<Void, Void, Void>
{
Vector<String> titlevec = new Vector<String>();
Vector<String> linkevec = new Vector<String>();
Vector<String> authorevec = new Vector<String>();
Vector<String> timeevec = new Vector<String>();
Vector<String> newsList = new Vector<String>();
private ProgressDialog pDialog;
// 웹사이트에 연결하기위해서 url 클래스를 적용
URL url;
String tagname = "", title = "", link = "";
String time = "", author = "";
boolean flag = false;
@Override
protected Void doInBackground(Void... params)
{
try
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
boolean isInItemTag = false;
int eventType = 0;
InputStream in = null;
newsListAdd();
for (int i = 0; i < newsList.size(); i++)
{
url = new URL(newsList.get(i));
in = url.openStream();
xpp.setInput(in, "UTF-8"); // xml문서의 인코딩 정확히 지정
isInItemTag = false;
eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT)
{
if (eventType == XmlPullParser.START_TAG)
{
// 태그명을 읽어드림
tagname = xpp.getName();
if (tagname.equals("item"))
{
isInItemTag = true;
}
}
else if (eventType == XmlPullParser.TEXT)
{
if (tagname.equals("title") && isInItemTag)
{
title += xpp.getText();
}
else if (tagname.equals("author") && isInItemTag)
{
author += xpp.getText();
}
else if (tagname.equals("pubDate") && isInItemTag)
{
time += xpp.getText();
}
else if (tagname.equals("link") && isInItemTag)
{
link += xpp.getText();
}
}
else if (eventType == XmlPullParser.END_TAG)
{
tagname = xpp.getName();
if (tagname.equals("item"))
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
Date date = new Date(time);
time = sdf.format(date);
titlevec.add(title);
linkevec.add(link);
authorevec.add(author);
timeevec.add(time);
title = "";
link = "";
author = "";
time = "";
isInItemTag = true;
}
}
eventType = xpp.next();
}
flag = true; // true : 지정된 xml파일을 읽고 필요한 데이터를
}
}
catch (Exception e)
{
}
return null;
}
}
}
< 로딩 화면 엑티비티 >
public class SplashActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
finish();
}
};
handler.sendEmptyMessageAtTime(0, 5000);
}
}