2013-08-07 53 views
0

我移植ListView在tabwidget.My列表搜索包含一个图像和textview.Without TabWidget它工作的罚款,但在TabWidget提示错误。我有错误getview我的要价较高是的NullPointerException在getView适配器延伸BaseAdapter

08-07 16:24:44.300: E/AndroidRuntime(20166): FATAL EXCEPTION: main 
08-07 16:24:44.300: E/AndroidRuntime(20166): java.lang.NullPointerException 
08-07 16:24:44.300: E/AndroidRuntime(20166): at com.example.project.SearchDictionaryActivity$MyCustomAdapter.getView(SearchDictionaryActivity.java:392) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.AbsListView.obtainView(AbsListView.java:2485) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.ListView.measureHeightOfChildren(ListView.java:1250) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.ListView.onMeasure(ListView.java:1161) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureVertical(LinearLayout.java:670) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.onMeasure(LinearLayout.java:563) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureVertical(LinearLayout.java:670) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.onMeasure(LinearLayout.java:563) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2242) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureVertical(LinearLayout.java:670) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.onMeasure(LinearLayout.java:563) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.measureVertical(LinearLayout.java:670) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.LinearLayout.onMeasure(LinearLayout.java:563) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4712) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2242) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.View.measure(View.java:12842) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1240) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2632) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.os.Looper.loop(Looper.java:137) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at android.app.ActivityThread.main(ActivityThread.java:4517) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at java.lang.reflect.Method.invokeNative(Native Method) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at java.lang.reflect.Method.invoke(Method.java:511) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
08-07 16:24:44.300: E/AndroidRuntime(20166): at dalvik.system.NativeStart.main(Native Method) 

我search_dictionary_item_item.xml是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="left|center" 
    android:paddingBottom="5dp" 
    android:paddingLeft="5dp" 
    android:paddingTop="10dp" > 

    <ImageView 
     android:id="@+id/ImageView01" 
     android:layout_width="50dp" 
     android:layout_height="60dp" > 
    </ImageView> 

    <TextView 
     android:id="@+id/TextView01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:textColor="#0099CC" 
     android:textSize="20dp" 
     android:textStyle="bold" > 
    </TextView> 

    </LinearLayout> 

我行这是

at com.example.project.SearchDictionaryActivity$MyCustomAdapter.getView(SearchDictionaryActivity.java:392) 

TextView textview = (TextView) row.findViewById(R.id.TextView01); 

我试图2建议

1.

public View getView(int position, View convertView, ViewGroup parent) 
    { 

      View row=convertView; 
      Context c = null; 

      if(convertView==null){ 
      LayoutInflater inflater = getLayoutInflater(null); 
      row = inflater.inflate(R.layout.search_dictionary_item_item, parent, false); 
     } 

    TextView textview = (TextView) row.findViewById(R.id.TextView01); 
    ImageView imageview = (ImageView) row.findViewById(R.id.ImageView01); 

    textview.setText(data_text[position]); 
    imageview.setImageBitmap(data_image[position]); 

    return (row); 

    } 

用于放置空getLayoutInflater(NULL);我得到

The method getLayoutInflater() in the type Activity is not applicable for the arguments (null) 

2.Sugesstion

public View getView(int position, View convertView, ViewGroup parent) 
    { 

    // LayoutInflater inflater = getLayoutInflater(); 
    View row; 
    LayoutInflater inflater = (LayoutInflater) convertView.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    row = inflater.inflate(R.layout.search_dictionary_item_item, parent, false); 

    TextView textview = (TextView) row.findViewById(R.id.TextView01); 
    ImageView imageview = (ImageView) row.findViewById(R.id.ImageView01); 

    textview.setText(data_text[position]); 
    imageview.setImageBitmap(data_image[position]); 

    return (row); 

    } 

两种亘古不变与logcat的工作上面

回答

1

试试这个链接,自定义适配器here

2

给您convertView永远不会在建议#感动2

convertView = inflater.inflate(R.layout.search_dictionary_item_item, parent, false); 

小号HOULD修复它,你还需要返回convertView而不是row

+0

我也有类似的问题。感谢这工作:) – Smaran

1

改变你这样的getview方法..

public View getView(int position, View convertView, ViewGroup parent) { 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) convertView.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(
       R.layout.search_dictionary_item_item, null); 

    } 

    TextView textview = (TextView) convertView 
      .findViewById(R.id.TextView01); 
    ImageView imageview = (ImageView) convertView 
      .findViewById(R.id.ImageView01); 

    textview.setText(data_text[position]); 
    imageview.setImageBitmap(data_image[position]); 

    return convertView; 

} 
1

我想你用一个错误的布局而不是你的正确的行布局,我得到了同样的错误。当我验证行布局是另一个时

例如,的 代替

convertView = inflater.inflate(R.layout.wrong_layout, parent, false); 

使用

convertView = inflater.inflate(R.layout.Correct_layout, parent, false); 
相关问题