Câu trả lời:
Bạn cần làm điều đó thông qua một ArrayAdapter
cái mà sẽ điều chỉnh ArrayList của bạn (hoặc bất kỳ bộ sưu tập nào khác) với các mục trong bố cục của bạn (ListView, Spinner, v.v.).
Đây là những gì hướng dẫn dành cho nhà phát triển Android nói:
A
ListAdapter
quản lý một đượcListView
hỗ trợ bởi một mảng các đối tượng tùy ý. Theo mặc định, lớp này mong đợi rằng id tài nguyên được cung cấp tham chiếu một tài nguyên duy nhấtTextView
. Nếu bạn muốn sử dụng một bố cục phức tạp hơn, hãy sử dụng các hàm tạo cũng lấy id trường. Id trường đó sẽ tham chiếu đến aTextView
trong tài nguyên bố cục lớn hơn.Tuy nhiên,
TextView
được tham chiếu đến, nó sẽ được lấp đầy bởitoString()
từng đối tượng trong mảng. Bạn có thể thêm danh sách hoặc mảng các đối tượng tùy chỉnh. Ghi đètoString()
phương thức của các đối tượng của bạn để xác định văn bản nào sẽ được hiển thị cho mục trong danh sách.
TextViews
Ví dụ: để sử dụng thứ gì đó khác với hiển thị mảngImageViews
hoặc để có một số dữ liệu bên cạnhtoString()
kết quả lấp đầy các dạng xem, hãy ghi đègetView(int, View, ViewGroup)
để trả về kiểu dạng xem bạn muốn.
Vì vậy, mã của bạn sẽ giống như sau:
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);
}
}
Đồng thời tra cứu giao diện ArrayAdapter :
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
Hãy thử câu trả lời dưới đây để điền danh sách xem bằng 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));
}
}
Dưới đây là một ví dụ về cách bạn có thể triển khai chế độ xem danh sách:
@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));
}
});
}