-1

I'm writing application for android. I'm trying to make a connection between SpringBoot with TomCat and Android. I'm using Retrofit for that. I'm trying do it this with tutorial on youtube. But I have an error in the adapter.Here: LayoutInflater inflater = ( (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE));

Does anyone know how to solve it?

Code:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import java.util.List;

public class UserAdapter extends ArrayAdapter {
private Context context;
private List<User> values;


public UserAdapter(Context context, int resource) {
    super(context, resource);
}

public UserAdapter(Context context, List<User> values) {
    super(context, R.layout.list_item_pagination, values);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;

    if (row == null) {
        LayoutInflater inflater =
                ( (LayoutInflater) 
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
        row = inflater.inflate(R.layout.list_item_pagination, parent, 
false);
    }
    TextView textView = (TextView) 
row.findViewById(R.id.list_item_pagination_text);
    User item = values.get(position);
    String message = item.getName();
    textView.setText(message);

    return row;
}}

LOGCAT:

11-08 20:49:23.180 2956-2956/com.example.karka.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: com.example.karka.myapplication, PID: 2956
                                                                           java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
                                                                               at com.example.karka.myapplication.UserAdapter.getView(UserAdapter.java:32)
                                                                               at android.widget.AbsListView.obtainView(AbsListView.java:2363)
                                                                               at android.widget.ListView.measureHeightOfChildren(ListView.java:1326)
                                                                               at android.widget.ListView.onMeasure(ListView.java:1233)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
                                                                               at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                               at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                                                                               at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                               at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                               at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                               at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                               at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
                                                                               at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                               at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                                                                               at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689)
                                                                               at android.view.View.measure(View.java:19857)
                                                                               at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275)
                                                                               at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366)
                                                                               at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619)
                                                                               at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
                                                                               at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)
                                                                               at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
                                                                               at android.view.Choreographer.doCallbacks(Choreographer.java:686)
                                                                               at android.view.Choreographer.doFrame(Choreographer.java:621)
                                                                               at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
                                                                               at android.os.Handler.handleCallback(Handler.java:751)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:154)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

2 Answers2

0

The context is null as per the error in your stack trace. You have two constructors in you adapter that pass in context objects. Use them to initialise the local context in your adapter.

Ivan Wooll
  • 4,145
  • 3
  • 23
  • 34
0

In your constructor, you are passing the context and list directly to the super constructor without setting your references to the context and values. Because of this, your values will not be set when you call them. However they will be set inside of the super class. You can save yourself some code and make these changes.

public class UserAdapter extends ArrayAdapter<User> {

public UserAdapter(Context context, int resource) {
    super(context, resource);
}

public UserAdapter(Context context, List<User> values) {
    super(context, R.layout.list_item_pagination, values);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;

    if (row == null) {
        LayoutInflater inflater =
                ( (LayoutInflater)
                        getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE));
        row = inflater.inflate(R.layout.list_item_pagination, parent,
                false);
    }
    TextView textView = (TextView)
            row.findViewById(R.id.list_item_pagination_text);
    User item = getItem(position);
    String message = item.getName();
    textView.setText(message);

    return row;
}}
Bropane
  • 104
  • 1
  • 7