trentgwest
trentgwest

Reputation: 23

ListVIew not showing up in my Layout, Android Studios

I'm trying out this Udacity course and need help. Why isn't my list showing up in my fragment. Please Help!

            package com.example.landon.sunshine.app;

            import android.app.Activity;
            import android.support.v4.app.Fragment;
            import android.os.Bundle;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.ViewGroup;
            import android.widget.ArrayAdapter;
            import android.widget.ListView;

            import java.util.ArrayList;
            import java.util.Arrays;
            import java.util.List;


            /**
             * A placeholder fragment containing a simple view.
             */
            public class MainActivityFragment extends Fragment {

                public MainActivityFragment() {
                }

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

                    String[] forecastArray = {

                            "Today - Sunny - 54/89",
                            "Tomorrow - Cloudy - 45/60",
                            "Wednesday - Sunny - 66/77",
                            "Thursday - Sunny - 67/89",
                            "Friday - Sunny - 77/95",
                            "Saturday - Rain - 50/70",
                            "Sunday - Sunny - 67/88"
                    };

                    List<String> weekForecast = new ArrayList<String>(
                            Arrays.asList(forecastArray));

                    ArrayAdapter<String> mForecastAdapter = new ArrayAdapter<String>(

                            getActivity(),

                            R.layout.list_item_forecast,

                            R.id.list_item_forecast_textview,

                            weekForecast

                    );

                    Activity rootView = null;

                    ListView listView = (ListView) rootView.findViewById(
                            R.id.listview_forecast);
                    listView.setAdapter(mForecastAdapter);

                    return inflater.inflate(R.layout.fragment_main,          container, false);
                }
            }

I'm new to java and new to android, hence the learning. I really hope someone can help.

I'm not even sure what it's wants me to say more of. I am studying this course and it's driving me insane. I have done this for several days looking for the errors and havent found too much of anything. But I have faith in this community, because this community taught me all my mistakes in javascript and css. Thank You

Upvotes: 2

Views: 398

Answers (5)

Rami
Rami

Reputation: 7929

You set your rootView to null rootView = null; and you'r trying to get the ListView from a null object rootView.findViewById(), you'll have a NullPointerException here.

Also rootView should be an instance of View not an Activity.

Change your code like that:

 public class MainActivityFragment extends Fragment {

           String[] forecastArray = {
                                "Today - Sunny - 54/89",
                                "Tomorrow - Cloudy - 45/60",
                                "Wednesday - Sunny - 66/77",
                                "Thursday - Sunny - 67/89",
                                "Friday - Sunny - 77/95",
                                "Saturday - Rain - 50/70",
                                "Sunday - Sunny - 67/88"
                        };

           View rootView;


          public MainActivityFragment() {}

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


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

                 List<String> weekForecast = new ArrayList<String>(
                                Arrays.asList(forecastArray));

                 ArrayAdapter<String> mForecastAdapter = new ArrayAdapter<String>(
                                getActivity(),
                                R.layout.list_item_forecast,
                                R.id.list_item_forecast_textview,
                                weekForecast);


                  ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);

                  listView.setAdapter(mForecastAdapter);

                  return rootView;
          }
}

Upvotes: 0

Ted
Ted

Reputation: 126

use

View view = inflater.inflate(R.layout.fragment_main,container, false);

and

ListView listView = (ListView) view.findViewById(R.id.listview_forecast);

Upvotes: 0

terencey
terencey

Reputation: 3332

You don't see your ListView because you're inflating your layout file twice. You first inflated it at:

View view = inflater.inflate(R.layout.fragment_main, container, false);

and again at:

return inflater.inflate(R.layout.fragment_main, container, false);

Therefore you're inflating your layout, initialising it, then returning a newly-inflated layout. That's why you don't see it.

You should just do return view instead, like so:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                             Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_main,  container, false);

    .
    .
    .

    return view;
}

Upvotes: 0

Karthika PB
Karthika PB

Reputation: 1373

inside your getView method

use a view which inflates your layout and use this view to declare the listview and return the same view at the end of GetView() method.You can use like this,

  @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                         Bundle savedInstanceState) {
               View view = inflater.inflate(R.layout.fragment_main,  container, false);

     String[] forecastArray = {

                            "Today - Sunny - 54/89",
                            "Tomorrow - Cloudy - 45/60",
                            "Wednesday - Sunny - 66/77",
                            "Thursday - Sunny - 67/89",
                            "Friday - Sunny - 77/95",
                            "Saturday - Rain - 50/70",
                            "Sunday - Sunny - 67/88"
                    };

      List<String> weekForecast = new ArrayList<String>(
                            Arrays.asList(forecastArray));

                    ArrayAdapter<String> mForecastAdapter = new ArrayAdapter<String>(

                            getActivity(),

                            R.layout.list_item_forecast,

                            R.id.list_item_forecast_textview,

                            weekForecast

                    );



                    ListView listView = (ListView) view.findViewById(
                            R.id.listview_forecast);
                    listView.setAdapter(mForecastAdapter);

                    return view;
}

Upvotes: 2

hrskrs
hrskrs

Reputation: 4490

Change:

Activity rootView = null;
ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
listView.setAdapter(mForecastAdapter);
return inflater.inflate(R.layout.fragment_main,container, false);

to:

View rootView = inflater.inflate(R.layout.fragment_main, container, false);;
ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
listView.setAdapter(mForecastAdapter);

return rootView ;

Upvotes: 1

Related Questions