42 votes

Comment puis-je implémenter un ListView sans ListActivity? (utilisez 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 une autre activité), mais est-ce que quelqu'un peut me montrer un code simple (juste la méthode onCreate) qui peut faire Listview sans ListActivity?

Merci

55voto

Patrick Kafka Points 4857

Si vous avez une mise en page XML pour l'activité, y compris un listView comme celui-ci

 <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);
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();
      }
});
 

28voto

Johnson Points 420

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" />
 

votre_classe.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);
  }
}
 

11voto

ccheneson Points 24031

Ce qui suit crée un simple ListView 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);
}
 

1voto

mobilekid Points 591

Vous pouvez également référencer votre mise en page, instancier un objet de mise en page à 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 au moment de l'exécution.

1voto

Rakesh Rangani Points 479

inclure 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);

}

}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X