我花了将近40个小时的项目已基本完成,但我还有最后一项任务要完成。我之前的问题是,当用户点击提取新闻RSS Feed时,该应用有时会挂起,因为它们都试图同时加载活动和Feed。用asynctask解决了这个问题。
现在,我有四个按钮可以在不同的Feed之间切换,基本上只是修改视图。这消除了重新加载屏幕或新活动。好吧,当我最初启动此活动时,asynctask的工作方式与我想要的完全相同,但并不像将粘贴复制到底部的每个不同视图那么简单。如何在每个不同的按钮/视图下实现asynctask。你会在底部看到onClick。
这是asynctask部分。
public class RssLoadingTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
displayRss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
preReadRss();
}
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
//super.onProgressUpdate(values);
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
readRss();
return null;
}
}
以下是onClick部分。显然,上面我有每个readRss,preReadRSS等...在初始活动的正确位置,但为什么Java不允许我在onClick部分放置这些相同的asynctask任务?我只是不知道修改器还没知道如何放置它们。还在学习很多。
public void onClick(查看v){
if (v == hawknation) {
try {
URL rssUrl = new URL("http://www.rss.com/feed");
SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
XMLReader myXMLReader = mySAXParser.getXMLReader();
RSSHandler myRSSHandler = new RSSHandler();
myXMLReader.setContentHandler(myRSSHandler);
InputSource myInputSource = new InputSource(rssUrl.openStream());
myXMLReader.parse(myInputSource);
myRssFeed = myRSSHandler.getFeed();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
{
if (myRssFeed!=null)
{
TextView feedTitle = (TextView)findViewById(R.id.feedtitle);
TextView feedDescribtion = (TextView)findViewById(R.id.feeddescribtion);
TextView feedPubdate = (TextView)findViewById(R.id.feedpubDate);
TextView feedLink = (TextView)findViewById(R.id.feedlink);
feedTitle.setText(myRssFeed.getTitle());
feedDescribtion.setText(myRssFeed.getDescription());
feedPubdate.setText(myRssFeed.getPubdate());
feedLink.setText(myRssFeed.getLink());
MyCustomAdapter adapter =
new MyCustomAdapter(this, R.layout.row, myRssFeed.getList());
setListAdapter(adapter);
}
}
答案 0 :(得分:0)
我最终没有使用我的观点。我只是通过在每个按钮上打开一个不同的活动来切换视图。