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(); 
     } 
相关问题