web-dev-qa-db-fra.com

Comment puis-je implémenter un ListView sans ListActivity? (utiliser uniquement l'activité)

Je suis nouveau sur Android et j'ai vraiment besoin de le faire de cette façon (j'ai envisagé de le faire dans un autre Activity), mais quelqu'un peut-il me montrer un code simple (juste la fonction onCreate() méthode) qui peut faire Listview sans ListActivity?

Merci

42
TIMEX

Si vous avez une disposition xml pour l'activité, y compris une liste

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent" 
Android:layout_height="fill_parent">

<ListView Android:id="@Android:id/list"
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent"
    Android:layout_weight="fill_parent"

Ensuite, dans votre onCreate, vous pourriez avoir quelque chose comme ça

setContentView(R.layout.the_view);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_list_item_1, myList);
ListView lv = (ListView)findViewById(Android.R.id.list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener()
{
     @Override
     public void onItemClick(AdapterView<?> a, View v,int position, long id) 
     {
          Toast.makeText(getBaseContext(), "Click", Toast.LENGTH_LONG).show();
      }
});
55
Patrick Kafka

Incluez la ressource suivante dans votre fichier res/layout/main.xml:

<ListView
  Android:id="@+id/id_list_view"
  Android:layout_width="fill_parent"
  Android:layout_height="fill_parent" />

your_class.Java

import Android.widget.ListView;
import Android.widget.ArrayAdapter;

public class your_class extends Activity
{
  private ListView m_listview;

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    m_listview = (ListView) findViewById(R.id.id_list_view);

    String[] items = new String[] {"Item 1", "Item 2", "Item 3"};
    ArrayAdapter<String> adapter =
      new ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, items);

    m_listview.setAdapter(adapter);
  }
}
28
evilspacepirate

Ce qui suit crée un ListView simple par programme:

public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         String[] myList = new String[] {"Hello","World","Foo","Bar"};              
         ListView lv = new ListView(this);
         lv.setAdapter(new ArrayAdapter<String>(this,Android.R.layout.simple_list_item_1,myList));
         setContentView(lv);
}
11
ccheneson

incluez le fichier de ressources suivant dans votre res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">

      <ListView
         Android:id="@+id/listView"
         Android:layout_width="match_parent"
         Android:layout_height="match_parent"
      </ListView>
</RelativeLayout>

MainActivity.Java

public class MainActivity extends Activity {
ListView listView;
String[] listPlanet={"mercury","Venus","Mars","Saturn","Neptune"};

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

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

    ArrayAdapter<String> adapter =
  new ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, listPlanet);

  listview.setAdapter(adapter);

}

}
1
Rakesh Rangani

Vous pouvez également référencer votre présentation, instancier un objet de présentation à partir de votre code, puis créer le ListView en Java. Cela vous donne une certaine flexibilité en termes de réglage de la hauteur et de la largeur dynamiques lors de l'exécution.

1
mobilekid