Mon Android
doit remplir le formulaire ListView
en utilisant les données d'un ArrayList
.
J'ai du mal à le faire. Quelqu'un peut-il m'aider avec le code ?
Mon Android
doit remplir le formulaire ListView
en utilisant les données d'un ArrayList
.
J'ai du mal à le faire. Quelqu'un peut-il m'aider avec le code ?
Vous devez le faire par le biais d'un ArrayAdapter
qui adaptera votre ArrayList (ou toute autre collection) à vos éléments dans votre layout (ListView, Spinner etc.).
C'est ce que le Guide du développeur Android dit :
A
ListAdapter
qui gère unListView
soutenu par un tableau d'objets arbitraires. Par défaut, cette classe s'attend à ce que l'identifiant de la ressource fournie fasse référence à un uniqueTextView
. Si vous souhaitez utiliser une mise en page plus complexe, utilisez les constructeurs qui prennent également un identifiant de champ. Cet identifiant de champ doit faire référence à unTextView
dans la ressource de mise en page plus large.Toutefois, le
TextView
est référencée, elle sera remplie avec l'élémenttoString()
de chaque objet du tableau. Vous pouvez ajouter des listes ou des tableaux d'objets personnalisés. Remplacez l'élémenttoString()
de vos objets pour déterminer le texte qui sera affiché pour l'élément de la liste.Pour utiliser autre chose que
TextViews
pour l'affichage du tableau, par exempleImageViews
ou d'avoir des données en plustoString()
les résultats remplissent les vues, remplacezgetView(int, View, ViewGroup)
pour retourner le type de vue que vous voulez.
Votre code devrait donc ressembler à ça :
public class YourActivity extends Activity {
private ListView lv;
public void onCreate(Bundle saveInstanceState) {
setContentView(R.layout.your_layout);
lv = (ListView) findViewById(R.id.your_list_view_id);
// Instanciating an array list (you don't need to do this,
// you already have yours).
List<String> your_array_list = new ArrayList<String>();
your_array_list.add("foo");
your_array_list.add("bar");
// This is the array adapter, it takes the context of the activity as a
// first parameter, the type of list view as a second parameter and your
// array as a third parameter.
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
your_array_list );
lv.setAdapter(arrayAdapter);
}
}
@ Amokrane Chentir : je n'ai pas réussi à vous joindre ..... pouvez-vous taper le programme complet .... merci
@ Amokrane Chentir : Je pense que la méthode "setContentView" doit être appelée avant "findViewById" sinon aucune ListView ne sera trouvée.
Consultez également Adaptateur de tableau interface :
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
Essayez la réponse ci-dessous pour remplir le listview en utilisant ArrayList.
public class ExampleActivity extends Activity
{
ArrayList<String> movies;
public void onCreate(Bundle saveInstanceState)
{
super.onCreate(saveInstanceState);
setContentView(R.layout.list);
// Get the reference of movies
ListView moviesList=(ListView)findViewById(R.id.listview);
movies = new ArrayList<String>();
getMovies();
// Create The Adapter with passing ArrayList as 3rd parameter
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, movies);
// Set The Adapter
moviesList.setAdapter(arrayAdapter);
// register onClickListener to handle click events on each item
moviesList.setOnItemClickListener(new OnItemClickListener()
{
// argument position gives the index of item which is clicked
public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
{
String selectedmovie=movies.get(position);
Toast.makeText(getApplicationContext(), "Movie Selected : "+selectedmovie, Toast.LENGTH_LONG).show();
}
});
}
void getmovies()
{
movies.add("X-Men");
movies.add("IRONMAN");
movies.add("SPIDY");
movies.add("NARNIA");
movies.add("LIONKING");
movies.add("AVENGERS");
}
}
public class Example extends Activity
{
private ListView lv;
ArrayList<String> arrlist=new ArrayList<String>();
//let me assume that you are putting the values in this arraylist
//Now convert your arraylist to array
//You will get an exmaple here
//http://www.java-tips.org/java-se-tips/java.lang/how-to-convert-an-arraylist-into-an-array.html
private String arr[]=convert(arrlist);
@Override
public void onCreate(Bundle bun)
{
super.onCreate(bun);
setContentView(R.layout.main);
lv=(ListView)findViewById(R.id.lv);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , arr));
}
}
Voici un exemple de la façon dont vous pouvez mettre en œuvre une vue de liste :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//We have our list view
final ListView dynamic = findViewById(R.id.dynamic);
//Create an array of elements
final ArrayList<String> classes = new ArrayList<>();
classes.add("Data Structures");
classes.add("Assembly Language");
classes.add("Calculus 3");
classes.add("Switching Systems");
classes.add("Analysis Tools");
//Create adapter for ArrayList
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, classes);
//Insert Adapter into List
dynamic.setAdapter(adapter);
//set click functionality for each list item
dynamic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("User clicked ", classes.get(position));
}
});
}
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.