sagarlakhani62
sagarlakhani62

Reputation: 39

methods in onCreate() not found

public class MainActivity extends Activity {

static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
        "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
        "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setListAdapter(new ArrayAdapter<String>(this,
        R.layout.activity_main, FRUITS));
    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
            // When clicked, show a toast with the TextView text
            Toast.makeText(getApplicationContext(),
                    ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
        }
    });

}


@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;
}

The following errors appear:

Gradle: cannot find symbol method
setListAdapter(android.widget.ArrayAdapter<java.lang.String>)
Gradle: cannot find symbol method getListView()

Upvotes: 0

Views: 3402

Answers (6)

Ritesh Gune
Ritesh Gune

Reputation: 16729

  1. Extend ListActivity instead of only Activity.

    public class MainActivity extends ListActivity { }
    
  2. In your R.layout.activity_main use <ListView android:id="@android:id/list"/>

  3. Create an adapter for list.(following is just an example to explain.)

     ArrayAdapter arrayAdapter = new ArrayAdapter(this,  // Context.
                ndroid.R.layout.simple_list_item_1, // Specify the row template to use
                your_array);    // your array having data
    
  4. setListAdapter(arrayAdapter );

Upvotes: 0

Shakeeb Ayaz
Shakeeb Ayaz

Reputation: 6096

You should extend ListActivity instead of Activity and in your xml listview id must be

    android:id="@android:id/list"

Upvotes: 0

fida1989
fida1989

Reputation: 3249

Sample listactivity code, changing it according to your need:

File : res/layout/list_fruit.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="20sp" >
</TextView>

File: ListFruitActivity.java

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class ListFruitActivity extends ListActivity {

    static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
            "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
            "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // no more this
        // setContentView(R.layout.list_fruit);

        setListAdapter(new ArrayAdapter<String>(this, R.layout.list_fruit,FRUITS));

        ListView listView = getListView();
        listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getApplicationContext(),
                ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
            }
        });

    }

}

Upvotes: 0

Hariharan
Hariharan

Reputation: 24853

Try this..

 ListView listView = (ListView) findViewById(R.id.list);
        listView.setTextFilterEnabled(true);
        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,FRUITS));

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getApplicationContext(),
                        ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
            }
        });

Upvotes: 0

Umer Farooq
Umer Farooq

Reputation: 7486

You should extend ListActivity instead of Activity. And your problem should be long gone.

Upvotes: 0

David Olsson
David Olsson

Reputation: 8225

Your code starts with:

public class MainActivity extends Activity {

Since you are using getListView() you must extend ListActivity instead. Try

public class MainActivity extends ListActivity {

Upvotes: 2

Related Questions