2013-03-20 4 views
1

내 피드에 listviews를 사용하는 데 문제가 있습니다. 나는 두 개의 피드가 동일한 활동에 하나의 뉴스를 스트림에 배치, 지금은 아래쪽에 이벤트를 추가 아직 두 번째 listview의 안드로이드 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" /> 

이 listview는 작동하지 ?? 나는 그 안드로이드 이드에 대해 알고있다? ive 여러 변형을 시도?

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

어떤 도움이 필요합니까? 필자는 코드를 통해 시간을 보내고 지금은 id가 문제라는 것을 알고 있습니다. 목록보기 작업을 바꾸면 두 번째 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"이 유효하며 Activity (내용이 두 ListViews 인 레이아웃)에 findViewById(R.id.list1)을 사용하면 ListView이 표시됩니다.

또한 코드에서 알 수 있듯이 2 개의 ListViews을 잘못 조작하는 것으로 나타납니다. onPostExecute() 방법 당신이 ID android.R.id.list와 다른위한 ListView 용 어댑터를 설정 setListAdapter() 방법을 사용합니다 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

+0

@JosephKenny 네, 위의 각 ListView (자신의 어댑터) 에서처럼 어댑터를 설정하십시오. – Luksprog

+0

@JosephKenny 네,하지만 두 개의 ListView 중 **에 대한 어댑터를 만들어야합니다. 안드로이드 개발자 사이트의 ListView에 대한 기본적인 튜토리얼을 따라야합니다. – Luksprog

관련 문제