0

I am populating listview for search in tabwidget.My list contain an image and textview.Without TabWidget it works fines but in TabWidget it gives error .I have error in getview My locat is

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)

My search_dictionary_item_item.xml is

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

my line 392 which is

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

is

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

i have tried 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);

    }

for placing null getLayoutInflater(null); I get

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

    }

Both Doesnot work with Logcat given Above

Passion
  • 662
  • 1
  • 11
  • 29

3 Answers3

2

your convertView is never touched in suggestion #2

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

should fix it, you also need to return convertView instead of row

tom91136
  • 8,662
  • 12
  • 58
  • 74
1

change your getview method like this..

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;

}
kalyan pvs
  • 14,486
  • 4
  • 41
  • 59
1

I think you used a wrong layout instead your Correct row layout, I got the same error. when I verified the row layout was another one

e.g. instead of

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

use

convertView = inflater.inflate(R.layout.Correct_layout, parent, false);
slavoo
  • 5,798
  • 64
  • 37
  • 39
Ameen Maheen
  • 2,719
  • 1
  • 28
  • 28