2013-08-07 3 views
0

Я заселение ListView для поиска в списке tabwidget.My содержит изображение и textview.Without TabWidget работают штрафы, но в TabWidget он дает ошибку й есть ошибка в GetView Моего Locat является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); 

s 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); 
Смежные вопросы