Object Blackberry-如果addElement()不起作用怎么办?

Object Blackberry-如果addElement()不起作用怎么办?,object,blackberry,vector,Object,Blackberry,Vector,我是黑莓开发应用程序的新手。我尝试将所有xml解析数据存储到一个对象中,并将它们设置为向量 public class XmlParser extends MainScreen { Database d; private HttpConnection hcon = null; private Vector binN; public Vector getBinN() { return binN; } public void setB

我是黑莓开发应用程序的新手。我尝试将所有xml解析数据存储到一个对象中,并将它们设置为向量

public class XmlParser extends MainScreen {
    Database d;
    private HttpConnection hcon = null;

    private Vector binN;
    public Vector getBinN() {
        return binN;
    }

    public void setBinN(Vector bin) {
        this.binN = bin;
    }

    LabelField from;
    LabelField ttl;
    LabelField desc;
    LabelField date;

    public XmlParser() {
        LabelField title = new LabelField("Headline News" ,LabelField.HCENTER|LabelField.USE_ALL_WIDTH);
        setTitle(title);

        try {
            URI myURI = URI.create("file:///SDCard/Database/WebFeed.db"); 
            d = DatabaseFactory.open(myURI);
            Statement st = d.createStatement("SELECT feed_url, feed_name FROM WebFeed");
            st.prepare();
            Cursor c = st.getCursor();
            while (c.next()) {
                Row r = c.getRow();
                hcon = (HttpConnection)Connector.open(r.getString(0));
                hcon.setRequestMethod(HttpConnection.GET);
                        hcon.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
                        hcon.setRequestProperty("Content-Length", "0");
                        hcon.setRequestProperty("Connection", "close");
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                DocumentBuilder builder = factory.newDocumentBuilder();

                builder.isValidating();
                Document document = builder.parse(hcon.openInputStream());

                Element rootElement = document.getDocumentElement();
                rootElement.normalize();

                NodeList list = document.getElementsByTagName("item");

                int i=0;
                while (i<10){
                    Node item = list.item(i);
                    if(item.getNodeType() != Node.TEXT_NODE) {
                        NodeList itemChilds = item.getChildNodes();
                        int j=0;
                        while (j<10){
                            Node detailNode = itemChilds.item(j);
                            if(detailNode.getNodeType() != Node.TEXT_NODE) {                                
                                if(detailNode.getNodeName().equalsIgnoreCase("title")) {
                                    ttl = new LabelField(getNodeValue(detailNode)) {
                                        public void paint(Graphics g) {
                                            g.setColor(Color.BLUE);
                                            super.paint(g);
                                        }
                                    };
                                    from = new LabelField(r.getString(1), LabelField.FIELD_RIGHT|LabelField.USE_ALL_WIDTH);
                                    ttl.setFont(Font.getDefault().derive(Font.BOLD));
                                    from.setFont(Font.getDefault().derive(Font.BOLD));
                                    add (from);
                                    add (ttl);
                                } else if(detailNode.getNodeName().equalsIgnoreCase("description")) {

                                    desc = new LabelField(getNodeValue(detailNode), 0, 70, USE_ALL_WIDTH);
                                    add(desc);
                                } else if(detailNode.getNodeName().equalsIgnoreCase("dc:date")) {
                                    date = new LabelField(getNodeValue(detailNode), 11, 5, USE_ALL_WIDTH) {
                                        public void paint(Graphics g) {
                                            g.setColor(Color.ORANGE);
                                            super.paint(g);
                                        }
                                    };
                                    add(date);
                                    add(new SeparatorField());
                                } else if(detailNode.getNodeName().equalsIgnoreCase("pubDate")) {
                                    date = new LabelField(getNodeValue(detailNode), 0, 22, USE_ALL_WIDTH) {
                                        public void paint(Graphics g) {
                                            g.setColor(Color.ORANGE);
                                            super.paint(g);
                                        }
                                    };
                                    add(date);
                                    add(new SeparatorField());
                                } else {
                                    System.out.println("not the node");
                                }
                            } else {
                                System.out.println("not text node");
                            }
                            j++;
                        }
                    }
                    i++;
                    BinNews bin = new BinNews();
                    bin.setProv(from.getText());
                    bin.setTitle(ttl.getText());
                    bin.setDesc(desc.getText());
                    bin.setDate(date.getText());
                    binN.addElement(bin);
                }
                setBinN(binN);
            }
            //setBinN(binN);
            st.close();
            d.close();
        } catch (Exception e)  {
            add (new LabelField(e.toString(),LabelField.HCENTER|LabelField.USE_ALL_WIDTH));
            System.out.println(e.toString());
        }
    }

    public String getNodeValue(Node node) {
        NodeList nodeList = node.getChildNodes();
        Node childNode = nodeList.item(0);
        return childNode.getNodeValue();
    }
}
我尝试将所有数据从一个名为BinNews的对象存储到一个名为binN的向量。但当我进行调试时,我发现BinN有空值,因为BinN.addlementbin不工作。
请告知。

首先,在whilei<10循环完成之前,您实际上不会给setBinN打电话。所以当你说binN.addElementbin时,binN将为空

但是,您的setBinNbinN调用没有意义,因为您正在传入binN,然后将其设置为自身,这不会起任何作用


你能做的就是让binN=newvector;在构造函数的顶部,之后它将不会为null。如果您将BinNews对象直接添加到binN中,我认为以后没有必要调用setBinN。

是的,这是答案,我昨天才意识到。谢谢您: