billyjayan
billyjayan

Reputation: 27

ArrayAdapter not working as expected

I have a List view that displays the weather forecast for the entire week. I have also set an adapter mForecastAdapter on this ListView. But when I preview the fragment_main.xml file the preview that I get is this

Fragment

This is my code in MainActivity.java

package com.example.android.sunshine.app;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
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;


public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

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

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        String[] forecastArray = {
                "Today - Sunny - 88/64",
                "Tomorrow - Rainy - 73/54",
                "Wednesday - Snow - 63/54",
                "Thursday - Rainy - 83/54",
                "Friday - Rainy - 73/58",
                "Saturday - Gloomy - 64/54",
                "Sunday - Rainy - 73/64"
        };
        ArrayAdapter<String> mForecastAdapter;
        List<String> weekForecast = new ArrayList<String>(Arrays.asList(forecastArray));
        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;
    }
}

} What is wrong with the ArrayAdapter? I'm using Android Studio if that makes any difference.

Upvotes: 0

Views: 1513

Answers (1)

erad
erad

Reputation: 1786

In the layout preview, the ListView will, by default, display a list similar to the one above, by showing a default ListView which contains "Item 1", "Item 2", "Item 3", etc... and "Sub Item 1", "Sub Item 2", "Sub Item 3", etc...

You won't see your actual ListView (assuming that you did the coding right) until you run your app in the emulator or test on an actual device.

Upvotes: 2

Related Questions