2013-08-07 3 views
0

Je peuplant listview pour la recherche dans la liste tabwidget.My contenant une image et textview.Without TabWidget cela fonctionne, mais des amendes en TabWidget il donne l'erreur .J'ai erreur dans GetView Mon Locat estNullPointerException dans getView de l'adaptateur s'étend 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) 

mon search_dictionary_item_item.xml est

<?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> 

ma ligne qui est

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

est

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

i ai essayé 2 suggestion

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); 

    } 

pour placer getLayoutInflater null (null); Je reçois

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); 

    } 

Les deux doesnot travailler avec Logcat données ci-dessus

Répondre

1

essayer ce lien pour adaptateur personnalisé here

2

votre convertView est jamais touché à la suggestion # 2

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

s Hould fixer, vous devez également retourner convertView au lieu de row

+0

J'ai eu un problème similaire. merci cela a fonctionné :) – Smaran

1

changer votre méthode de GetView comme ça ..

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

Je pense que vous avez utilisé une mise en page de mal Au lieu de corriger votre disposition de ligne, j'ai eu la même erreur. lorsque j'ai vérifié que la disposition des lignes en était une autre

par exemple. au lieu de

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

utilisation

convertView = inflater.inflate(R.layout.Correct_layout, parent, false); 
Questions connexes