1

我試圖加載我lsitview在我oncreate()方法與defualt顏色綠色,但它給我的錯誤在該行v.setBackgroundColor(Color.GREEN);Android的錯誤:在加載的ListView

public class createtarget extends ListActivity 
    { 

     String [] Target; 
     ListView lstView; 


     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.createtarget); 


      lstView = getListView();  
      lstView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);   
      lstView.setTextFilterEnabled(true); 

      Target=new String []{"A","B","C"}; 
      final stableArrayAdapter adapter = new stableArrayAdapter(this,android.R.layout.simple_list_item_checked, Target); 
      setListAdapter(adapter); 


     } 
} 

適配器類:

class stableArrayAdapter extends ArrayAdapter<String> { 

    HashMap<String, Integer> mIdMap = new HashMap<String, Integer>(); 

    public stableArrayAdapter(Context context, int textViewResourceId, String [] objects) 
    { 
     super(context, textViewResourceId, objects); 
     for (int i = 0; i < objects.length; ++i) { 
     mIdMap.put(objects[i], i); 
     } 
    } 

    @Override 
    public long getItemId(int position) { 
     String item = getItem(position); 
     return mIdMap.get(item); 
    } 

    @Override 
    public boolean hasStableIds() { 
     return true; 
    } 
    @Override 
    public View getView(int position, View v, ViewGroup parent) 
    { 


     if(v!= null) 
        v.setBackgroundColor(Color.GREEN); 

     return v; 
    } 

    } 

錯誤:

05-31 04:38:20.795: E/AndroidRuntime(9525): FATAL EXCEPTION: main 
05-31 04:38:20.795: E/AndroidRuntime(9525): java.lang.NullPointerException 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.AbsListView.obtainView(AbsListView.java:2161) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.ListView.makeAndAddView(ListView.java:1831) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.ListView.fillDown(ListView.java:674) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.ListView.fillFromTop(ListView.java:735) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.ListView.layoutChildren(ListView.java:1652) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.AbsListView.onLayout(AbsListView.java:1994) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.View.layout(View.java:14008) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1434) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.View.layout(View.java:14008) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.View.layout(View.java:14008) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1434) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.View.layout(View.java:14008) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.View.layout(View.java:14008) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.os.Handler.handleCallback(Handler.java:725) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.os.Looper.loop(Looper.java:137) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-31 04:38:20.795: E/AndroidRuntime(9525):  at dalvik.system.NativeStart.main(Native Method) 
+0

你想要做的是一個數組列表中顯示的項目? Target = new String [] {「A」,「B」,「C」}; ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_checked,Target); setListAdapter(適配器);並註釋此行setContentView(R.layout.createtarget); – Raghunandan

+0

@ Raghunandan-是的 – Salman

+0

嘗試上面的註釋和類stableArrayAdapter。對於自定義適配器,您需要在getview方法中使用自定義視圖。你沒有這樣做。此外,由於您的活動擴展了listactivity,因此您需要對此行的setContentView(R.layout.createtarget);註釋。由於我不知道你想要什麼,我張貼相同的評論 – Raghunandan

回答

1

如果你看一下堆棧跟蹤,還有的setColor不提,它崩潰的一些內部佈局相關的功能。
這是因爲您重寫了getView()之後,視圖不會被創建。
在您的getView()中調用super.getView()第一件事,然後修改並返回其結果。

編輯:儘管您通常會重寫getView()來擴充自定義佈局,但原始海報只需更改背景顏色。調用super.getView(...)將使Android的實現膨脹佈局,然後他可以做他的小調整。更少的原代碼,原來少的錯誤:​​)你color.xml文件

+0

http://developer.android.com/reference/android/view/View.html#setBackgroundColor(int)。 View有一個setBackgroundcolor方法。這裏的問題是他沒有誇大getview中的任何佈局,並且他正在嘗試設置顏色而不會使視圖膨脹。它的空 – Raghunandan

+0

它確實但崩潰不在那裏:)檢查堆棧跟蹤。 – Torp

+0

他沒有誇大getview中的任何視圖。所以他在getview中返回null。試試吧 – Raghunandan

1

使用這樣的

View v = super.getView(position, convertView, parent); 
    v.setBackgroundColor(Color.YELLOW); 
+0

這沒有幫助。這不是一個答案 – Raghunandan

+0

http://developer.android.com/reference/android/view/View.html#setBackgroundColor(int)。檢查鏈接並編輯您的答案 – Raghunandan

0

Drfine綠顏色值,並把它作爲以下

v.setBackgroundResource(R.color.green); 
+0

http://developer.android.com/reference/android/view/View.html#setBackgroundColor(int)。視圖有一個setBackgroundclor方法 – Raghunandan

0

從您的適配器使用getView()方法來創建你的視圖層次。

定義佈局它在RES /佈局和getView()它充氣:

public View getView(int position, View v, ViewGroup parent) { 
    if (v == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(R.layout.child_layout, parent, false); 
    } 
    // use v here 
}