Reputation: 687
Im having trouble with using listviews for my feeds. I have two feeds placed on top of each other in the same activity one streams news, now im adding events to the bottom one yet it cant recognise the android id of the second listview???
<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" />
This first listview works perfectly.
<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" />
This listview doesnt work?? i know its about the android id? ive tried several variations?
android:id="@+id/android:list1"
android:id="@android:id/list1"
android:id="@+id/list1"
Any help needed? Ive spent hours trawling through code and i now know its the id thats the problem because if i swap the listview activities then the second listview works??
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);
}
}
Upvotes: 1
Views: 664
Reputation: 87064
This ids:
android:id="@+id/android:list1"
android:id="@android:id/list1"
don't exist in the SDK. The id android:id="@+id/list1"
is valid and if you use findViewById(R.id.list1)
in the Activity
(which has as its content the layout with the two ListViews
) you'll find the ListView
.
Also, as your code suggests it appears you're trying to manipulate the two ListViews
as one which would be plain wrong. In the onPostExecute()
method you'll use the setListAdapter()
method to set the adapter for the ListView
with the id android.R.id.list
and for the other ListView
you'll do:
ListView second = (ListView) findViewById(R.id.list1);
// set the adapter for this ListView
Regarding this code:
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);
what are you trying to do starting two(?!?!) activities(to do what?!)?
Edit:
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);
}
}
Upvotes: 1