An ArrayAdapter displays the value returned by the toString()
method, so you will need to override this method in your custom Object class to return the desired String. You will also need to have at least a getter method for the URL, so you can retrieve that in the click event.
public class NewsObject {
private String title;
private String url;
public NewsObject(String title, String url) {
this.title = title;
this.url = url;
}
public String getUrl() {
return url;
}
@Override
public String toString() {
return title;
}
...
}
In the onItemClick()
method, position
will be the index in the ArrayList of your custom Objects corresponding to the list item clicked. Retrieve the URL, parse it, and call startActivity()
.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
NewsObject item = allNews.get(position);
String url = item.getUrl();
Uri uri = Uri.parse(url);
startActivity(new Intent(Intent.ACTION_VIEW, uri));
}
});
Please note, I assumed your custom class is NewsObject
, as that is what’s used with your Adapter example.