2010-07-18 21 views
1

進出口試圖顯示此列表視圖,但我不斷收到一個:的Android的ListView nullpointer.exception

07-17 21:14:22.233:ERROR/AndroidRuntime(349):顯示java.lang.NullPointerException

我想我知道問題是什麼,但我不知道如何解決它。

我有我將使用顯示在我的名單

parser topicparser = new parser(); 
    final String[] TOPICS = topicparser.topic("http://www.test.com"); 

不要擔心解析器的偉大工程的字符串數組。我用它看到的唯一問題是解析器完全不認識的網站將有多少串有,所以我設置的解析器的字符串數組是非常大的:

String substr[] = new String[250]; 

,但我知道,大多隻有像11到13個值,我會是陣列中存儲,我認爲這個問題是,當我做到這一點:

setListAdapter(new ArrayAdapter<String>(this, R.layout.topics, TOPICS)); 

    ListView lv = getListView(); 

因爲String數組被設置爲在它長達250個價值,我只實際存儲說12然後有一個空條目,所以當我運行代碼時,它顯示我的列表視圖,但當我到達視圖的底部,它強制關閉,日誌告訴我,有nu llpointer。我可以告訴我在解析時收集了多少個條目,但是如何告訴我的列表視圖只在列表中顯示12個條目,因此不會是任何空條目。還是有任何其他解決方案來解決我的問題。

謝謝

@Cristian C.

我試圖做你說什麼,但現在我得到一個:

java.lang.ClassCastException:java.util.Arrays中的$的ArrayList

這是我做過什麼:

String[] TOPICS = topicparser.topic("test.com"); 
ArrayList<String> niceArray = (ArrayList<String>) Arrays.asList(TOPICS); // eclipse told me I had to add the cast 
setListAdapter(new ArrayAdapter<String>(this, R.layout.topics, niceArray)); 

什麼想法?謝謝

+0

對不起......你是對的。再看看我的答案。 – Cristian 2010-07-18 19:33:47

回答

2

,而不是在你的話題方法返回一個字符串數組,我會返回一個列表

所以不是

String substr[] = new String[250] 

你可以寫

ArrayList<String> substr = new ArrayList<String>(); 

所以現在你可以使用

substr.add("whatever string"); 

ArrayList中只會大如您添加的項目,這樣你就不會擔心空指針異常

而且由於話題現在返回一個ArrayList,最後一部分可以改寫爲

niceArray = topicparser.topic("test.com"); 
setListAdapter(new ArrayAdapter<String>(this, R.layout.topics, niceArray)); 
+0

我要試試這個謝謝 – jramirez 2010-07-18 19:47:22

+0

非常感謝你解決了我的問題! – jramirez 2010-07-18 19:55:05

3

不使用正常的數組,而是使用ArrayList

能正常數組轉換爲ArrayList,你可以這樣做:

ArrayList<String> niceArray = new ArrayList(Arrays.asList(normalArray)); 

這些類都包含在java.util包。的

+0

我可以傳遞數組列表到ListView適配器像這樣: ArrayList的 niceArray = Arrays.asList(主題); //主題是//我的字符串數組 setListAdapter(new ArrayAdapter (this,R.layout.topics,niceArray)); – jramirez 2010-07-18 18:00:03

+0

請參閱上面的問題編輯 – jramirez 2010-07-18 18:36:07

+0

我試着改變你現在說我沒有得到一個java.lang.ClassCastException:java.util.Arrays $ ArrayList 但我得到java.lang.NullPointerException – jramirez 2010-07-18 19:46:55

1

我通過重寫getView方法解決了這個問題。


class MyArrayAdapter extends ArrayAdapter<String> { 

    private int resource; 

    public MyArrayAdapter(Context context, int resource, List<String> objects) { 
     super(context, resource, objects); 
     this.resource = resource; 
    } 

    /** 
    * get new element 
    * 
    * @param position - add position 
    * @param convertView - previous element 
    * @param parent - ListView instance 
    * @see android.widget.ArrayAdapter#getView(int, android.view.View, 
    * android.view.ViewGroup) 
    */ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView v = (TextView) TextView.inflate(getContext(), this.resource, null); 
     v.setText(this.getItem(position)); 
     return v; 
    } 
} 
: 
setListAdapter(new MyArrayAdaptor(this, R.layout.topics, niceArray));