0

Can any one tell me what this logcat is demanding for?

Suggestions please.

Thanks for your precious time!..

Adapter_available.java

public View getView(int position, View convertView, ViewGroup parent) 
{
    ViewHolder holder = null;

    if (convertView == null) 
    {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_available_layout, null);

        holder = new ViewHolder();
        holder.txt_plname    = (TextView) convertView.findViewById(R.id.textView_planname);
        holder.txt_price     = (TextView) convertView.findViewById(R.id.textView_price);
        holder.txt_size      = (TextView) convertView.findViewById(R.id.textView_size);
        holder.btn_buy_ = (Button) convertView.findViewById(R.id.button_buy);

//          convertView.setTag(holder);
        holder = (ViewHolder) convertView.getTag();


    Available_contents contents =  originalist.get(position);

    holder.txt_price.setText("K "+contents.price);
    holder.txt_size.setText(contents.size);
    holder.txt_plname.setText(contents.planname);

    }
return convertView;
}

LOGCAT

01-04 18:29:04.705: E/AndroidRuntime(12701): FATAL EXCEPTION: main
01-04 18:29:04.705: E/AndroidRuntime(12701): java.lang.NullPointerException
01-04 18:29:04.705: E/AndroidRuntime(12701):    at org.twinkle.bemobile.Adapter_available.getView(Adapter_available.java:57)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.AbsListView.obtainView(AbsListView.java:2472)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.ListView.onMeasure(ListView.java:1162)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2397)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at   android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2397)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.View.measure(View.java:15524)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1986)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1227)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at   android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1400)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1120)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4604)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.Choreographer.doFrame(Choreographer.java:525)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.os.Handler.handleCallback(Handler.java:615)
01-04 18:29:04.705: E/AndroidRuntime(12701):    at android.os.Handler.dispatch
joao2fast4u
  • 6,868
  • 5
  • 28
  • 42
prabu
  • 717
  • 3
  • 12
  • 30
  • Post `getView` of adapter – Raghunandan Jan 04 '14 at 13:22
  • check for return **null** in `getView()` function in your adapter. – Sergey Shustikov Jan 04 '14 at 13:22
  • Yes. Prolem is in 'org.twinkle.bemobile.Adapter_available.getView(...);' –  Jan 04 '14 at 13:25
  • @Raghunandan please visit my question again ive posted getview of adaper – prabu Jan 04 '14 at 13:27
  • deathember and Vladimir are true. There is a Null value at line#57 in Adapter_available.getView(). Put a break point you start application in debugging mode to know which variable is null. – Tabrej Khan Jan 04 '14 at 13:28
  • `java.lang.NullPointerException 01-04 18:29:04.705: E/AndroidRuntime(12701): at org.twinkle.bemobile.Adapter_available.getView(Adapter_available.java:57)` - line 57 of getView is the exact location of the problem. My guess is this line, since you do not set the tag anywhere. `holder = (ViewHolder) convertView.getTag();`. Please read your tutorial again. – Simon Jan 04 '14 at 13:29
  • @Prabu the code will not help as its not clear what is at line#57. Please debug to know which variable is null. – Tabrej Khan Jan 04 '14 at 13:30

2 Answers2

1

Change getView

You use a ViewHolder pattern. You initialize views when convertView is null. You set the tag to convertView.

convertView.setTag(holder); 

If convertView is not null

holder = (ViewHolder) convertView.getTag();

As Simon suggested in his commented

//  convertView.setTag(holder); // commented
    holder = (ViewHolder) convertView.getTag(); // using get tag
    // this line probably gives you NPE

How ListView's recycling mechanism works

Probably the above link has a better explanation how list recycling works

http://developer.android.com/training/improving-layouts/smooth-scrolling.html

Using ViewHolder Pattern helps in smooth scrolling and performance.

public View getView(int position, View convertView, ViewGroup parent) 
{
    ViewHolder holder = null;

    if (convertView == null) 
    {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_available_layout, parent,false);

        holder = new ViewHolder();
        holder.txt_plname    = (TextView) convertView.findViewById(R.id.textView_planname);
        holder.txt_price     = (TextView) convertView.findViewById(R.id.textView_price);
        holder.txt_size      = (TextView) convertView.findViewById(R.id.textView_size);
        holder.btn_buy_ = (Button) convertView.findViewById(R.id.button_buy);

        convertView.setTag(holder); 
        // this was commented. no need to do that
       } 
       else
       { 
        holder = (ViewHolder) convertView.getTag(); 
        // if convertVIew is not null initialize the holder using convertView.getTag

       }  


    Available_contents contents =  originalist.get(position);

    holder.txt_price.setText("K "+contents.price);
    // set text to text view and update it here 
    holder.txt_size.setText(contents.size);
    holder.txt_plname.setText(contents.planname);

    }
return convertView;
}
Community
  • 1
  • 1
Raghunandan
  • 132,755
  • 26
  • 225
  • 256
1

you don't use SetTag() in your code but you want use following code:

holder = (ViewHolder) convertView.getTag();

you must first setTag() then get that and you need else statement for checking getting Tag.

if (convertView == null) 
    {

        holder = new ViewHolder();

        // define parameter
        convertView.setTag(holder); 

       } 
       else
       { 
        holder = (ViewHolder) convertView.getTag();
       }  
       // setText and other thing
  return convertView;
Shayan Pourvatan
  • 11,898
  • 4
  • 42
  • 63