2013-03-20 56 views
1

我在爲我的提要使用列表視圖時遇到問題。我有兩個飼料在同一活動中放置在一個對方的頂部一個流消息,現在即時將事件添加到底部但它無法識別第二個列表視圖的Android ID?相對佈局中的多個列表視圖?

<ListView 
     android:id="@android:id/list" 
     android:background="@color/red" 
     android:layout_toRightOf="@+id/map" 
     android:layout_width="260dp" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="10dp" 
     android:layout_height="413dp" /> 

這第一個listview的作品完美。

<ListView 
     android:id="@+id/android:list1" 
     android:background="@color/blue" 
     android:layout_toRightOf="@+id/button3" 
     android:layout_width="260dp" 
     android:layout_marginTop="430dp" 
     android:layout_marginLeft="6dp" 
     android:layout_height="390dp" /> 

此列表視圖不工作?我知道它的android id?我嘗試了幾個變化?

android:id="@+id/android:list1" 
android:id="@android:id/list1" 
android:id="@+id/list1" 

需要哪些幫助? 我花了幾個小時通過代碼拖網,我現在知道它的ID這就是問題,因爲如果我交換listview活動,然後第二個listview工程?

private class MyTask extends AsyncTask<Void, Void, Void>{ 

      @Override 
      protected Void doInBackground(Void... arg0) { 
       try { 
        URL rssUrl = new URL("http:/news.rss"); 
        ///URL rssUrl1 = new URL("http://events.rss"); 

        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); 
        ///InputSource myInputSource1 = new InputSource(rssUrl1.openStream()); 
        ///myXMLReader.parse(myInputSource1); 

        myRssFeed = myRSSHandler.getFeed(); 
        ///myRssFeed1 = myRSSHandler.getFeed(); 

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

       return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) { 
       if (myRssFeed!=null || myRssFeed1!=null) 
       { 
        TextView feedupdate = (TextView)findViewById(R.id.feedupdate); 
        feedupdate.setText(myRssFeed.getupdate()); 
        //TextView feedupdate1 = (TextView)findViewById(R.id.feedupdate1); 
        ///feedupdate1.setText(myRssFeed1.getupdate()); 

        ArrayAdapter<RSSItem> adapter = 
          new ArrayAdapter<RSSItem>(getApplicationContext(), 
            android.R.layout.simple_list_item_1,myRssFeed.getList()); 
        setListAdapter(adapter); 
        ///ArrayAdapter<RSSItem> adapter1 = 
          //new ArrayAdapter<RSSItem>(getApplicationContext(), 
            //android.R.layout.simple_list_item_1,myRssFeed1.getList()); 
        //setListAdapter(adapter1); 

       }else{ 

        TextView textEmpty = (TextView)findViewById(android.R.id.empty); 
        textEmpty.setText("No Feed Found"); 
       } 

       super.onPostExecute(result); 
      } 

     } 
     @Override 
     protected void onListItemClick(ListView l, View v, int position, long id) { 

      Uri feedUri = Uri.parse(myRssFeed.getItem(position).getLink()); 
      Uri feedUri1 = Uri.parse(myRssFeed1.getItem(position).getLink()); 
      Intent myIntent = new Intent(Intent.ACTION_VIEW, feedUri); 
      Intent myIntent1 = new Intent(Intent.ACTION_VIEW, feedUri1); 
      startActivity(myIntent); 
      startActivity(myIntent1); 
     } 
    } 

public class HomeActivity extends ListActivity { 
      static final LatLng TULLAMORE = new LatLng(53.28000, -7.49000); 
      static final LatLng MRA = new LatLng(53.274823, -7.492655); 
      private GoogleMap map; 
      private RSSFeed myRssFeed = null; 
      private RSSFeed myRssFeed1 = null; 
      @Override 


      protected void onCreate(Bundle savedInstanceState) { 
      requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title); 
      new MyTask().execute(); 


      map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 
      Marker tullamore = map.addMarker(new MarkerOptions().position(TULLAMORE) 
       .title("Tullamore")); 
      Marker mra = map.addMarker(new MarkerOptions() 
       .position(MRA) 
       .title("-") 
       .snippet("Hey :-)") 
       .icon(BitmapDescriptorFactory 
        .fromResource(R.drawable.ic_launcher))); 

      map.moveCamera(CameraUpdateFactory.newLatLngZoom(TULLAMORE, 70)); 
      // Zoom in, animating the camera. 
      map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 
      map.setMyLocationEnabled(true); 
      map.getUiSettings().setZoomControlsEnabled(true); 
      map.getUiSettings().setMyLocationButtonEnabled(true); 
      map.setTrafficEnabled(true); 
      Button button1 = (Button) findViewById(R.id.button1); 
      Button button2 = (Button) findViewById(R.id.button2); 
      Button button3 = (Button) findViewById(R.id.button3); 
      Button button4 = (Button) findViewById(R.id.button4); 

      button2.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View arg0) { 
        //Starting a new Intent 
        Intent FavouritesScreen = new Intent(getApplicationContext(),FavouritesActivity.class); 
        startActivity(FavouritesScreen); 
       } 
       }); 

      button4.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View arg0) { 
        //Starting a new Intent 
        Intent NearbyScreen = new Intent(getApplicationContext(), NearbyActivity.class);  
        startActivity(NearbyScreen); 
       } 
       }); 

      button3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       //Starting a new Intent 
       Intent TourismScreen = new Intent(getApplicationContext(), TourismActivity.class); 
       startActivity(TourismScreen); 
      } 
      }); 

      button1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View arg0) { 
        //Starting a new Intent 
        Intent MapScreen = new Intent(getApplicationContext(), MapActivity.class); 
        startActivity(MapScreen); 
       } 
       }); 
      } 

      @Override 
      public boolean onCreateOptionsMenu(Menu menu) { 
       getMenuInflater().inflate(R.menu.home, menu); 
       return true; 

      } 
      private class MyTask extends AsyncTask<Void, Void, Void>{ 

       @Override 
       protected Void doInBackground(Void... arg0) { 
        try { 
         URL rssUrl = new URL("http://www.midlandsireland.ie/news.rss"); 
         URL rssUrl1 = new URL("http://feedity.com/midlandsireland-ie/V1pUU1VR.rss"); 

         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); 
         InputSource myInputSource1 = new InputSource(rssUrl1.openStream()); 
         myXMLReader.parse(myInputSource1); 

         myRssFeed = myRSSHandler.getFeed(); 
         myRssFeed1 = myRSSHandler.getFeed();  

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

        return null; 
       } 

       @Override 
       protected void onPostExecute(Void result) { 
        if (myRssFeed!=null || myRssFeed1!=null) 
        { 
         TextView feedupdate = (TextView)findViewById(R.id.feedupdate); 
         feedupdate.setText(myRssFeed.getupdate()); 
         TextView feedupdate1 = (TextView)findViewById(R.id.feedupdate1); 
         feedupdate1.setText(myRssFeed1.getupdate()); 
         ListView newsfeed = (ListView)findViewById(android.R.id.list); 
         ListView eventsfeed = (ListView)findViewById(R.id.list1); 

         ArrayAdapter<RSSItem> adapter = 
           new ArrayAdapter<RSSItem>(getApplicationContext(), 
             android.R.layout.simple_list_item_1,myRssFeed.getList());     
         setListAdapter(adapter); 

        }else{ 

         TextView textEmpty = (TextView)findViewById(android.R.id.empty); 
         textEmpty.setText("No Feed Found"); 
        } 

        super.onPostExecute(result); 
       } 

      } 
      @Override 
      protected void onListItemClick(ListView l, View v, int position, long id) {  
       Uri feedUri = Uri.parse(myRssFeed.getItem(position).getLink()); 
       Intent myIntent = new Intent(Intent.ACTION_VIEW, feedUri); 
       startActivity(myIntent); 
      } 
     } 

回答

1

這IDS:

android:id="@+id/android:list1" 
android:id="@android:id/list1" 

不要在SDK存在。 ID android:id="@+id/list1"是有效的,如果您使用findViewById(R.id.list1)中的Activity(其內容爲兩個ListViews的佈局),您會發現ListView

此外,正如您的代碼所示,您似乎試圖將兩個ListViews作爲一個明顯錯誤的操作。在onPostExecute()方法中,您將使用setListAdapter()方法來設置ListView適配器與ID android.R.id.list和其他ListView你會做:

ListView second = (ListView) findViewById(R.id.list1); 
// set the adapter for this ListView 

對此代碼:

 Uri feedUri = Uri.parse(myRssFeed.getItem(position).getLink()); 
     Uri feedUri1 = Uri.parse(myRssFeed1.getItem(position).getLink()); 
     Intent myIntent = new Intent(Intent.ACTION_VIEW, feedUri); 
     Intent myIntent1 = new Intent(Intent.ACTION_VIEW, feedUri1); 
     startActivity(myIntent); 
     startActivity(myIntent1); 

你打算開始兩個(?!?!)活動(做什麼?!)?

編輯:

try { 
       URL rssUrl = new URL("http:/news.rss"); 
       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(); 

       RSSHandler myRSSHandler1 = new RSSHandler(); 
       myXMLReader.setContentHandler(myRSSHandler1); 

       URL rssUrl1 = new URL("http://events.rss"); 
       InputSource myInputSource1 = new InputSource(rssUrl1.openStream()); 
       myXMLReader.parse(myInputSource1); 
       myRssFeed1 = myRSSHandler1.getFeed(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace();  
      } catch (ParserConfigurationException e) { 
       e.printStackTrace();  
      } catch (SAXException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace();  
      } 

@Override 
     protected void onPostExecute(Void result) { 
      if (myRssFeed!=null && myRssFeed1!=null) { 
       ArrayAdapter<RSSItem> adapter = 
         new ArrayAdapter<RSSItem>(getApplicationContext(), android.R.layout.simple_list_item_1, myRssFeed.getList()); 
       setListAdapter(adapter); 
       ArrayAdapter<RSSItem> adapter1 = 
         new ArrayAdapter<RSSItem>(getApplicationContext(),   android.R.layout.simple_list_item_1,myRssFeed1.getList()); 
       ListView lv = (ListView) findViewById(R.id.list1); 
       lv.setAdapter(adapter1); 
      } else { 
      setListAdapter(new ArrayAdapter<RSSItem>(getApplicationContext(),   android.R.layout.simple_list_item_1, new ArrayList<RSSItem>());); 
      ArrayAdapter<RSSItem> adapterEmpty1 = 
         new ArrayAdapter<RSSItem>(getApplicationContext(),   android.R.layout.simple_list_item_1, new ArrayList<RSSItem>()); 
       ListView lv = (ListView) findViewById(R.id.list1); 
       lv.setAdapter(adapterEmpty1); 
      } 

     } 
+0

的ListView新聞源=(ListView中)findViewById(android.R.id.list); list.setListAdapter(newsfeed); ListView eventsfeed =(ListView)findViewById(R.id.list1); list1.setListAdapter(eventsfeed); – PropK 2013-03-21 13:36:27

+0

@JosephKenny是的,像上面那樣爲每個ListView設置適配器(它是自己的適配器)。 – Luksprog 2013-03-21 13:44:48

+0

@JosephKenny是的,但你需要爲兩個'ListViews'中的每個**創建一個適配器。你應該真的遵循一些關於Android開發人員網站上的ListViews的基本教程。 – Luksprog 2013-03-21 14:30:21