Skip to content
This repository has been archived by the owner on Jun 23, 2022. It is now read-only.

You must supply a resource ID for a TextView #214

Open
rpysork opened this issue May 4, 2016 · 0 comments
Open

You must supply a resource ID for a TextView #214

rpysork opened this issue May 4, 2016 · 0 comments

Comments

@rpysork
Copy link

rpysork commented May 4, 2016

I am getting an error message in logcat after the Sunshine app fails to open in my Nexus emulator that shuts down.

The error message causes the application to crash with a fatal exception:
05-04 17:59:12.130 2388-2388/com.example.android.sunshine.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.sunshine.app, PID: 2388
java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView

I have written the code according to the example provided here: 1.04_add_dummy_data...1.05_create_arrayadapter

My code is as follows:

package com.example.android.sunshine.app;

import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.os.Bundle;
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();

    //noinspection SimplifiableIfStatement
    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 {

    ArrayAdapter<String> mForecastAdapter;

    public PlaceholderFragment() {
    }

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

        //Create some dummy data for the ListView. Here's a sample weekly forecast
        String[] forecastArray = {
                "Today - Sunny - 88/63",
                "Tomorrow - Foggy - 70/40",
                "Weds - Cloudy - 72/63",
                "Thurs - Hemorrhoids - 75/65",
                "Fri - Heavy Rain - 65/56",
                "Sat - Flooding Get Out the Boat - 60/55",
                "Sun - Sunny - 80/72"
        };

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

        // Now that we have some dummy forecast data, create an ArrayAdapter.
        //The ArrayAdapter will take data from a source (like our dummy forecast data) and
        //use it to populate the ListView it's attached to.

        mForecastAdapter = new ArrayAdapter<String>(
                //The current context (this activity)
                getActivity(),
                //ID of List item layout
                R.layout.list_item_forecast,
                //ID of the textview to populate
                R.id.list_item_forecast_textview,
                //Forecast data
                weekForecast);

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

        // Get a reference to the ListView, and attach this adapter to it.
        ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
        listView.setAdapter(mForecastAdapter);

        return rootView;
    }

}

}

Can anyone tell me what I'm doing wrong.
If by any chance I have forgotten something please reply with what additional information is needed.
Your help is much appreciated.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant