0

Simple question. ListView shows up in my preview for Android Studio but when I run the app, it just comes up blank.

I have an arrayadapter that is pulling some data from an array, then pushing it into the ListView in the activity. It is supposed to show a list of menu items that the user can scroll through in the activity. No such luck.

I tried playing around with a few features of the XML file but nothing got fixed so here I am.

Here is my XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.ericleeconklin.sleepnoise2.ListSounds"
tools:showIn="@layout/activity_list_sounds">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              tools:context=".ListActivity">

    <ListView
        android:id="@+id/mobile_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </ListView>

</LinearLayout>

And here is my Java

package com.ericleeconklin.sleepnoise2;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListSounds extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_sounds);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

public class ListDisplay extends Activity {
    // Array of strings...
    String[] mobileArray = {"Waterfall","Fire","Fan","River","Heavy `Rain","Light Rain","Lawnmower","Restaurant"};`

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_list_sounds);

        ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, mobileArray);

        ListView listView = (ListView) findViewById(R.id.mobile_list);
        listView.setAdapter(adapter);
    }
}

}
Eric Conklin
  • 539
  • 4
  • 17
  • 1
    just try to copy your code in first onCreate and remove second class.. its useless.. otherwise make interface or called your List class to Your MainClass, Your code is fine, but you are calling list activity to inner class, that's why its blank – Sagar Chavada Jul 10 '16 at 15:16
  • Ah I see. I didn't notice the second oncreate. Good catch. – Eric Conklin Jul 11 '16 at 19:42

2 Answers2

0

Modify your code to the following:

package com.ericleeconklin.sleepnoise2;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListSounds extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_sounds);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        // Array of strings...
        String[] mobileArray = {"Waterfall","Fire","Fan","River","Heavy `Rain","Light Rain","Lawnmower","Restaurant"};
        ArrayAdapter adapter = new ArrayAdapter<String>(this,  R.layout.activity_listview, mobileArray);   
        ListView listView = (ListView) findViewById(R.id.mobile_list);
        listView.setAdapter(adapter);

    }

}
Zubin Kadva
  • 593
  • 1
  • 4
  • 29
0

In your call to the ArrayAdapter constructor, the resource id should be the resource id for a layout file containing a TextView to use when instantiating views.

You might try using

android.R.layout.activity_list_item 

instead of

R.layout.activity_listview

You might want to look at this too: ArrayAdapter in android to create simple listview

Community
  • 1
  • 1
albert c braun
  • 2,650
  • 1
  • 22
  • 32