Android:onClick Between Views和利用Asynctask

时间:2011-06-17 14:56:05

标签: android rss onclick android-asynctask

我花了将近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);

         }       
     }

1 个答案:

答案 0 :(得分:0)

我最终没有使用我的观点。我只是通过在每个按钮上打开一个不同的活动来切换视图。