我是使用java编程的新手。
只是想弄清楚为什么我的代码不起作用。
boolean insideItem = false;
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
if (eventType == XmlPullParser.START_TAG){
if (xpp.getName().equalsIgnoreCase("item")){
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase("title")) {
if (insideItem)
headlines.add(xpp.nextText());
} else if (xpp.getName().equalsIgnoreCase("link")) {
if (insideItem)
links.add(xpp.nextText());**boolean insideItem = false;
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
if (eventType == XmlPullParser.START_TAG){
if (xpp.getName().equalsIgnoreCase("item")){
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase("title")) {
if (insideItem)
headlines.add(xpp.nextText());
} else if (xpp.getName().equalsIgnoreCase("link")) {
if (insideItem)
links.add(xpp.nextText());
它给了我以下错误:
类型List中的方法add(capture#3-of?)不适用于参数(String)
任何想法如何解决这个问题? 有人可以向我解释为什么它不起作用吗?
编辑:
继承整个listActivity代码:
public class Main_Menu extends ListActivity {
List<?> headlines;
List<?> links;
@SuppressWarnings("rawtypes")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main__menu);
headlines = new ArrayList();
links = new ArrayList();
try{
URL url = new URL ("http://feeds.ign.com/ign/all");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(getInputStream(url), "UTF_8");
boolean insideItem = false;
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
if (eventType == XmlPullParser.START_TAG){
if (xpp.getName().equalsIgnoreCase("item")){
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase("title")) {
if (insideItem)
headlines.add(xpp.nextText());
} else if (xpp.getName().equalsIgnoreCase("link")) {
if (insideItem)
links.add(xpp.nextText());
}
}else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){
insideItem=false;
}
eventType = xpp.next();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
@SuppressWarnings("unchecked")
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, headlines);
setListAdapter(adapter);
}
答案 0 :(得分:1)
很难说没有看到列表的初始化,但我猜你需要改变:
List links = new ArrayList();
为:
List<String> = new ArrayList<String>();
答案 1 :(得分:0)
**boolean insideItem = false;
???
以下是XmlPullParser的文档:
* http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
如果当前事件是START_TAG,那么下一个元素是否为TEXT 返回元素内容,如果下一个事件是END_TAG,则为空 返回字符串,否则抛出异常。
我怀疑你只是拉起一个不是文本元素的元素。
查看链接上的示例代码,并考虑相应地重构代码。
... IMHO