为什么'headlines.add(xpp.nextText());'给我一个错误?

时间:2013-03-05 00:53:58

标签: java android eclipse methods boolean

我是使用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);
}

2 个答案:

答案 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