[英]Populating a ListView using an ArrayList?
我的Android
應用程序需要使用ArrayList
中的數據填充ListView
。
我很難做到這一點。 有人可以幫我寫代碼嗎?
您需要通過ArrayAdapter
來完成,它將使您的 ArrayList(或任何其他集合)適應您布局中的項目(ListView、Spinner 等)。
這就是Android 開發者指南所說的:
管理由任意對象數組支持的
ListView
的ListAdapter
。 默認情況下,此類期望提供的資源 id 引用單個TextView
。 如果您想使用更復雜的布局,請使用也采用字段 id 的構造函數。 該字段 id 應引用較大布局資源中的TextView
。然而,
TextView
被引用,它將被數組中每個對象的toString()
填充。 您可以添加自定義對象的列表或數組。 覆蓋對象的toString()
方法以確定將為列表中的項目顯示哪些文本。要使用
TextViews
以外的東西來顯示數組,例如ImageViews
,或者要讓toString()
結果之外的一些數據填充視圖,請覆蓋getView(int, View, ViewGroup)
以返回所需的視圖類型。
所以你的代碼應該是這樣的:
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);
}
}
嘗試以下答案以使用 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));
}
}
這是一個如何實現列表視圖的示例:
@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));
}
});
}
首先我創建了對象
ListView listview;
ArrayAdapter arrayAdapter;
ArrayList<Albums> listAlbums;
然后在 On Create 方法上:
listview = findViewById(R.id.listviewAlbum);
listAlbums = new ArrayList<Albums>();
arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,
listAlbums);
listview.setAdapter(arrayAdapter);
然后,如果您使用 API,您可以使用此代碼來通過數據集:
for (Albums albumaux : response.body()) {
listAlbums.add(albumaux);
}
arrayAdapter.notifyDataSetChanged();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.