I am creating a custom adapter using data from the web. Below is what I've been working on. The logcat says it's having problem at
view = layoutInflater.inflate(R.layout.article_each, null);
in the getView part. This is line 49 of ArticleListAdapter, as indicated in the error line below logcat.
The full logcat around the error is like below. (Is there anyway I can get a more detailed error log?) * I updated the log below! (please let me know if this is still not the right log to provide.)
04-17 22:57:53.408 22401-22401/org.androidtown.slidingexercise20180403 D/InputTransport: Input channel constructed: fd=102
04-17 22:57:53.408 22401-22401/org.androidtown.slidingexercise20180403 D/InputTransport: Input channel destroyed: fd=85
04-17 22:57:53.419 22401-22401/org.androidtown.slidingexercise20180403 D/ViewRootImpl@64962f[Toast]: ThreadedRenderer.create() translucent=true
04-17 22:57:53.425 22401-22401/org.androidtown.slidingexercise20180403 D/InputTransport: Input channel constructed: fd=98
04-17 22:57:53.427 22401-22401/org.androidtown.slidingexercise20180403 D/ViewRootImpl@64962f[Toast]: setView = android.widget.LinearLayout{7f0743c V.E...... ......I. 0,0-0,0} touchMode=true
04-17 22:57:53.430 22401-22401/org.androidtown.slidingexercise20180403 W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup)' on a null object reference
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at org.androidtown.slidingexercise20180403.ArticleListAdapter.getView(ArticleListAdapter.java:49)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.AbsListView.obtainView(AbsListView.java:3238)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.ListView.makeAndAddView(ListView.java:2147)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.ListView.fillDown(ListView.java:767)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.ListView.fillFromTop(ListView.java:833)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.ListView.layoutChildren(ListView.java:1900)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.AbsListView.onLayout(AbsListView.java:3008)
04-17 22:57:53.438 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.439 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
04-17 22:57:53.440 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at com.android.internal.policy.DecorView.onLayout(DecorView.java:884)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.View.layout(View.java:18804)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewGroup.layout(ViewGroup.java:5951)
04-17 22:57:53.441 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2659)
04-17 22:57:53.442 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2375)
04-17 22:57:53.442 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1526)
04-17 22:57:53.442 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7102)
04-17 22:57:53.442 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
04-17 22:57:53.442 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.Choreographer.doCallbacks(Choreographer.java:702)
04-17 22:57:53.442 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.Choreographer.doFrame(Choreographer.java:638)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.os.Handler.handleCallback(Handler.java:751)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.os.Looper.loop(Looper.java:154)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6682)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
04-17 22:57:53.443 22401-22401/org.androidtown.slidingexercise20180403 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
04-17 22:57:53.445 22401-22401/org.androidtown.slidingexercise20180403 D/AndroidRuntime: Shutting down VM
04-17 22:57:53.451 22401-22401/org.androidtown.slidingexercise20180403 E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.androidtown.slidingexercise20180403, PID: 22401
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
    at org.androidtown.slidingexercise20180403.ArticleListAdapter.getView(ArticleListAdapter.java:55)
    at android.widget.AbsListView.obtainView(AbsListView.java:3238)
    at android.widget.ListView.makeAndAddView(ListView.java:2147)
    at android.widget.ListView.fillDown(ListView.java:767)
    at android.widget.ListView.fillFromTop(ListView.java:833)
    at android.widget.ListView.layoutChildren(ListView.java:1900)
    at android.widget.AbsListView.onLayout(AbsListView.java:3008)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:884)
    at android.view.View.layout(View.java:18804)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2659)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2375)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1526)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7102)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
    at android.view.Choreographer.doCallbacks(Choreographer.java:702)
    at android.view.Choreographer.doFrame(Choreographer.java:638)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
    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:6682)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
I've tried many different ways but still can't figure out what has gone wrong. I would be grateful for any suggestion and comment! Thank you!
Below is the custom adapter I am creating,
package org.androidtown.slidingexercise20180403;
import android.app.Activity;
import android.content.Context;
import android.text.Layout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
class ArticleListAdapter extends BaseAdapter implements ListAdapter {
    Context context;
    ArrayList<HashMap<String, String>> articleList;
    LayoutInflater layoutInflater;
    public ArticleListAdapter (Context context,  ArrayList<HashMap<String, String>> articleList) {
        super();
        this.articleList = articleList;
        this.context = context;
        layoutInflater = LayoutInflater.from(context);
    }
    @Override public int getCount() {
        if(articleList==null)
            return 0;
        else
            return articleList.size();
    }
    @Override public HashMap<String, String> getItem(int position) {
        if(null==articleList) return null;
        else
            return articleList.get(position);
    }
    @Override public long getItemId(int position) {
        return position;
    }
    @Override public View getView(int position, View view, ViewGroup parent) {
        view = layoutInflater.inflate(R.layout.article_each, null);
        TextView titleView =(TextView)view.findViewById(R.id.title);
        HashMap<String, String> eacharticle = articleList.get(position);
        if(eacharticle != null ) {
            String title = eacharticle.get("title");
            titleView.setText(title);
        }
        return view;
    }
}
and below is ArticleList activity.
package org.androidtown.slidingexercise20180403;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.ListView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import static java.lang.Integer.parseInt;
public class ArticleList extends AppCompatActivity {
    Intent intent;
    String articlelist;
    JSONArray jsonArray;
    ArrayList<HashMap<String, String>> articleList;
    ListView ArticleListView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.article_list);
        intent = getIntent();
        articlelist = intent.getStringExtra("articlelist");
        articleList = new ArrayList<HashMap<String, String>>();
        ArticleListView = (ListView) findViewById(R.id.articlelistbox);
        getArticleList(articlelist);
    }
    public void getArticleList(String url) {
        class GetDataJSON extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... params) {
                String uri = "http://www.critiquers.org/android/articlelist.php?articlelist="+params[0];
                BufferedReader bufferedReader = null;
                try {
                    URL url = new URL(uri);
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();
                    StringBuilder sb = new StringBuilder();
                    bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                    String json;
                    while ((json = bufferedReader.readLine()) != null) {
                        sb.append(json + "\n");
                    }
                    return sb.toString().trim();
                } catch (Exception e) {
                    return null;
                }
            }
            @Override
            protected void onPostExecute(String result) {
                try {
                    jsonArray = new JSONArray(result);
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject c = jsonArray.getJSONObject(i);
                        String no = c.getString("no");
                        String url = c.getString("url");
                        String title = c.getString("title");
                        String date_mktime = c.getString("date_mktime");
                        String media = c.getString("media");
                        String media_no = c.getString("media_no");
                        String author = c.getString("author");
                        String author_no = c.getString("author_no");
                        String facebook_no= c.getString("facebook_no");
                        String rep_image= c.getString("rep_image");
                        HashMap<String, String> addarticle = new HashMap<String, String>();
                        addarticle.put("no", "no");
                        addarticle.put("url", "url");
                        addarticle.put("title", "title");
                        addarticle.put("media", "media");
                        addarticle.put("media_no", "media_no");
                        addarticle.put("author", "author");
                        addarticle.put("author_no", "author_no");
                        addarticle.put("date_mktime", "date_mktime");
                        addarticle.put("facebook_no", "facebook_no");
                        addarticle.put("rep_image", "rep_image");
                        articleList.add(addarticle);
                    }
                    Integer size = articleList.size();
                    String sizeTxt = size.toString();
                    Toast.makeText (ArticleList.this, sizeTxt, Toast.LENGTH_LONG).show();
                    //아래에 정의될 커스텀어댑터 클래스로 어댑터를 설졍한다
                    ArticleListAdapter articleadapter = new ArticleListAdapter(
                            ArticleList.this,
                            articleList
                    );
                    ArticleListView.setAdapter(articleadapter);
                } catch (JSONException e) {
                    e.printStackTrace();
                }//end try catch
            }//end onPostExecute
        }//end GetDataJSON
        GetDataJSON g = new GetDataJSON();
        g.execute(url);
    }//end getArticleList
    public void xClicked(View v){
        finish();
    }
}
 
     
    