2

時,我有一個自定義行一個ListView: detail_row1.xml的Android的ListView NullPointerException異常增加觀看

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:padding="6dip" 
    **android:background="@drawable/item_background_selector"** ---> line 7 
    android:id="@+id/detail_linearLayout" 
    > 

<TextView 
    android:id="@+id/propName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"  
    android:textSize="16sp" 
    android:textStyle="bold" 
    android:textColor="#000000" 
    android:gravity="center_vertical|left" 
    android:paddingTop="10sp" 
    android:paddingBottom="10sp" 
    android:paddingLeft="4sp" 

/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="2" 
    android:id="@+id/propValue"  
    android:textColor="#000000" 
    android:textSize="16sp" 
    android:textStyle="bold" 
    android:paddingTop="10sp" 
    android:paddingBottom="10sp" 
    android:paddingRight="4sp" 
    android:gravity="center_vertical|right" 
    /> 

</LinearLayout> 

/drawable/item_background_selector.xml (相同的,如果我把它下/彩色/ item_background_selector.xml和正確地引用它在detail_row1.xml)

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="false" android:color="#ACD52B"> 
    </item> 
    <item android:state_selected="true" android:color="#0094CE"> 
    </item> 
</selector> 

當我嘗試在我ListAdapter膨脹這樣的觀點:

public View getView(int position, View convertView, ViewGroup parent) { 
    View v=convertView; 
    if(v==null) { 
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v=vi.inflate(R.layout.detail_row1, null); **--> NullPointerException** 
    } 
    . 
    . 

它拋出一個NullPointerException。

這不,如果我只是刪除線7(機器人/背景)從detail_row1.xml的情況下

上爲什麼發生這種情況(相當新到Android)

在此先感謝任何線索/幫助!

(編輯)的logcat:

**08-24 00:27:53.637: E/AndroidRuntime(15295): FATAL EXCEPTION: main** 
08-24 00:27:53.637: E/AndroidRuntime(15295): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 
08-24 00:27:53.637: E/AndroidRuntime(15295): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
08-24 00:27:53.637: E/AndroidRuntime(15295): at **com.dhomes.steel.DetailActivity$1.getView(DetailActivity.java:101)** 

(第二編輯)

我listAdapter:

​​
+0

安置自己的logcat的。 – Praveenkumar

+1

嘗試將第7行放回原處並執行項目 - >清理,然後重新加載應用程序 –

+0

@JamesFazio +1是的,您是對的。那就是我現在正在輸入的內容。但是,你會放。 – Praveenkumar

回答

0

我的評論似乎越來越隱藏。因此張貼爲答案。

不幸的是,選擇器不能用於顏色。看到這個:Selector on background color of TextView

+0

嗨,同樣的,我會立即嘗試這個答案,並且如果它的工作標記爲正確的答案。謝謝你的幫助 –

+0

薩米爾,應用程序是不是現在使用這個答案崩潰,我仍然無法得到我想要的結果(用setSelection +選擇器強制/僞造我的列表視圖上的默認選擇),但我要將它標記爲正確,因爲它是問題的根源。如果你確實知道爲什麼我的項目不會改變listView setSelection那將是很好的(已經做出了CHOICE_MODE_SINGLE列表,請求焦點,同時使用android:state_selected,state_checked,state_pressed無效) –

+0

適用於我。你如何「選擇」該項目?您必須使用上下鍵或軌跡球來選擇列表視圖中的項目。您無法通過觸摸(或單擊模擬器)進行選擇。觸摸某個項目時,您可以獲得「點擊」事件。參考此:http://stackoverflow.com/questions/2433952/android-list-view-selected-item-1 – Sameer

1
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
v=vi.inflate(R.layout.detail_row1, null); 

從上面行。看起來你只是在你的customadapter類中膨脹了這個。所以,你從Constructor所以最好使用下面,像以前做的context對象 -

... 
LayoutInflater vi = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
v=vi.inflate(R.layout.detail_row1, null); 
... 

而且,不要從您的XML文件的背景。只要嘗試清理您的項目並在完成此更改後運行即可。

+0

它是一個匿名內部ListAdapter:lvProperties.setAdapter(new ListAdapter(){....... –

0

我不確定,但你可以試試這個。相反,在getview調用充氣器調用它在你的適配器類的構造函數:

LayoutInflater vi =(LayoutInflater)DetailActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

,然後調用佈局ID在getView爲:

if (convertView == null) { 

      convertView = inflater.inflate(R.layout.cat_content, null); 

      holder.name = (TextView) convertView.findViewById(R.id.name); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
相關問題