0

I am trying to add listview to my layout from a class which extends fragments. The problem is, when the data is coming, the layout is showing null pointer exception. Here is the code:

TopStoriesFragment.java

public class TopStoriesFragment extends Fragment {

    public String thehindu = "http://www.thehindu.com/news/?service=rss";
    public String toi = "http://timesofindia.feedsportal.com/c/33039/f/533965/index.rss";
    public String reuters = "http://feeds.reuters.com/reuters/topNews";
    public String deccanherald = "http://www.deccanherald.com/rss-internal/top-stories.rss";
    public String currenturl = thehindu;
    AlertDialog levelDialog;
    public String fakingnews = "http://thepuntended.wordpress.com/";
    public LayoutInflater inflater;
    ListView listView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);

        feedTitle = (TextView) rootView.findViewById(R.id.feedtitle);
        feedDescribtion = (TextView) rootView.findViewById(R.id.feeddescribtion);

        listView = (ListView) rootView.findViewById(android.R.id.list);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                Intent intent = new Intent(getActivity(), ShowDetails.class);
                Bundle bundle = new Bundle();
                bundle.putString("keyTitle", myRssFeed.getItem(position).getTitle());
                bundle.putString("keyDescription", myRssFeed.getItem(position)
                        .getDescription());
                bundle.putString("keyLink", myRssFeed.getItem(position).getLink());
                bundle.putString("keyPubdate", myRssFeed.getItem(position).getPubdate());
                intent.putExtras(bundle);
                startActivity(intent);

            }
        });
        startReadRss();

        return rootView;
    }

    public class RssLoadingTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            displayRss();
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            preReadRss();
        }

        @Override
        protected void onProgressUpdate(Void... values) {
            // TODO Auto-generated method stub
            // super.onProgressUpdate(values);
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            // TODO Auto-generated method stub
            readRss();
            return null;
        }

    }

    private RSSFeed myRssFeed = null;

    TextView feedTitle;
    TextView feedDescribtion;

    // TextView feedPubdate;
    // TextView feedLink;

    public class MyCustomAdapter extends ArrayAdapter<RSSItem> {

        public MyCustomAdapter(Context context, int textViewResourceId,
                List<RSSItem> list) {
            super(context, textViewResourceId, list);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            // return super.getView(position, convertView, parent);

            View row = convertView;

            if (row == null) {
   ---------------------- Logcat error takes me here----------------------------
                row = inflater.inflate(R.layout.row, parent, false);
   ---------------------------------------------------------------------------------
            }

            TextView listTitle = (TextView) row.findViewById(R.id.listtitle);
            listTitle.setText(myRssFeed.getList().get(position).getTitle());
            TextView listPubdate = (TextView) row
                    .findViewById(R.id.listpubdate);
            listPubdate.setText(myRssFeed.getList().get(position).getPubdate());

            if (position % 2 == 0) {
                listTitle.setBackgroundColor(0xff101010);
                listPubdate.setBackgroundColor(0xff101010);
            } else {
                listTitle.setBackgroundColor(0xff080808);
                listPubdate.setBackgroundColor(0xff080808);
            }

            return row;
        }
    }

    private void startReadRss() {
        new RssLoadingTask().execute();
    }

    private void preReadRss() {
        feedTitle.setText("--- wait ---");
        feedDescribtion.setText("");
        // feedPubdate.setText("");
        // feedLink.setText("");
        listView.setAdapter(null);

        Toast.makeText(getActivity(), "Reading RSS, Please wait.", Toast.LENGTH_LONG)
                .show();
    }

    private void readRss() {

        try {
            URL rssUrl = new URL(currenturl);
            SAXParserFactory mySAXParserFactory = SAXParserFactory
                    .newInstance();
            SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
            XMLReader myXMLReader = mySAXParser.getXMLReader();
            RSSHandler myRSSHandler = new RSSHandler();
            myXMLReader.setContentHandler(myRSSHandler);
            InputSource myInputSource = new InputSource(rssUrl.openStream());
            myXMLReader.parse(myInputSource);

            myRssFeed = myRSSHandler.getFeed();

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private void displayRss() {
        if (myRssFeed != null) {
            Calendar c = Calendar.getInstance();
            // String strCurrentTiime = "\n(Time of Reading - "
            // + c.get(Calendar.HOUR_OF_DAY)
            // + " Hrs. : "
            // + c.get(Calendar.MINUTE) + " Mins.)\n" +c.get(Calendar.AM_PM);

            SimpleDateFormat sdf = new SimpleDateFormat(
                    "MMMM-dd-yyyy HH:mm:ss a");
            String strCurrentTiime = sdf.format(c.getTime());

            feedTitle.setText(myRssFeed.getTitle());
            feedDescribtion.setText(strCurrentTiime);
            // feedPubdate.setText(myRssFeed.getPubdate());
            // feedLink.setText(myRssFeed.getLink());

            MyCustomAdapter adapter = new MyCustomAdapter(getActivity(), R.layout.row,
                    myRssFeed.getList());
             listView.setAdapter(adapter);

        }
    }

}

LogCat:

07-03 00:21:38.253: E/AndroidRuntime(27831): FATAL EXCEPTION: main
07-03 00:21:38.253: E/AndroidRuntime(27831): java.lang.NullPointerException
07-03 00:21:38.253: E/AndroidRuntime(27831):    at akshat.jaiswal.newshelf.TopStoriesFragment$MyCustomAdapter.getView(TopStoriesFragment.java:129)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.AbsListView.obtainView(AbsListView.java:2207)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.ListView.onMeasure(ListView.java:1162)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:698)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1451)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:850)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2191)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.View.measure(View.java:15609)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4879)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.Choreographer.doCallbacks(Choreographer.java:579)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.Choreographer.doFrame(Choreographer.java:548)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.os.Handler.handleCallback(Handler.java:725)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.os.Looper.loop(Looper.java:153)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at android.app.ActivityThread.main(ActivityThread.java:5297)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at java.lang.reflect.Method.invokeNative(Native Method)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at java.lang.reflect.Method.invoke(Method.java:511)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-03 00:21:38.253: E/AndroidRuntime(27831):    at dalvik.system.NativeStart.main(Native Method)

Row.xml

<?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:layout_margin="4dp"
    android:background="@android:color/darker_gray"
    android:orientation="vertical">
<TextView
    android:id="@+id/listtitle"
    android:layout_marginTop="1dp"
    android:layout_width="fill_parent"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:layout_height="wrap_content"/>
<TextView
    android:id="@+id/listpubdate"
    android:layout_marginBottom="1dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@android:style/TextAppearance.Small"/>
</LinearLayout>
4
  • please post the stack trace of the exception (taken from LogCat), and tell us what lines correspond to what's written there Commented Jul 2, 2014 at 19:00
  • 2
    possible duplicate of Unfortunately MyApp has stopped. How can I solve this? Commented Jul 2, 2014 at 19:00
  • 1
    Please show logcat. Always show logcat. Commented Jul 2, 2014 at 19:00
  • As you expect the problem may be in your layout then posting the layout file would help. Also post logcat showing the NPE. Commented Jul 2, 2014 at 19:01

1 Answer 1

2

You have not initialized your inflater member variable you're using in getView().

Use e.g. inflater = LayoutInflater.from(context) to initialize it.

Sign up to request clarification or add additional context in comments.

2 Comments

That's the reason for the NPE and one way to fix it. Is the stacktrace really the same after the fix, or is there another exception?
Sorry.. My fault.. Added your code on wrong location.. Working now.. Thank you as much as ever possible..

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.