Meine Android
-App muss die ListView
mit den Daten einer ArrayList
auffüllen.
Ich habe Probleme damit. Kann mir bitte jemand mit dem Code helfen?
Sie müssen dies über eine ArrayAdapter
tun, die Ihre ArrayList (oder jede andere Sammlung) an Ihre Elemente in Ihrem Layout (ListView, Spinner usw.) anpasst.
Dies ist, was der Android Entwickler Guide sagt:
Eine
ListAdapter
, die eineListView
verwaltet, die von einem Array aus beliebigen Objekten unterstützt wird. Standardmäßig erwartet diese Klasse, dass die angegebene Ressourcen-ID auf eine einzelneTextView
verweist. Wenn Sie ein komplexeres Layout verwenden möchten, verwenden Sie die Konstruktoren, die auch eine Feld-ID verwenden. Diese Feld-ID sollte auf eineTextView
in der größeren Layoutressource verweisen.Wenn jedoch auf die Variable
TextView
verwiesen wird, wird sie mit der FunktiontoString()
jedes Objekts im Array gefüllt. Sie können Listen oder Arrays von benutzerdefinierten Objekten hinzufügen. Überschreiben Sie dietoString()
Methode Ihrer Objekte, um zu bestimmen, welcher Text für das Element in der Liste angezeigt wird.Um etwas anderes als
TextViews
für die Array-Anzeige zu verwenden, beispielsweiseImageViews
, oder um einige Daten nebentoString()
zu haben, füllen die Ergebnisse die Ansichten aus. Überschreiben SiegetView(int, View, ViewGroup)
, um den gewünschten Ansichtstyp zurückzugeben.
Ihr Code sollte also so aussehen:
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);
}
}
Schauen Sie auch nach ArrayAdapter interface:
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
Verwenden Sie die unten stehende Antwort, um die Listenansicht mithilfe von ArrayList aufzufüllen
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));
}
}
Hier ein Beispiel, wie Sie eine Listenansicht implementieren können:
@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));
}
});
}