Pages

Thứ Ba, 18 tháng 6, 2019

ArrayAdapter

ArrayAdapter trong Android

Một ListAdapter có thể quản lí một ListView chứa danh sách các phần tử có kiểu bất kì. Việc rất đơn giản, bạn chỉ cần “móc nối” dữ liệu với TextView thông qua ID của nó với mỗi dòng trong ListView là một TextView – ví dụ như ListView gồm danh sách tên sinh viên mà thôi. Nếu bạn muốn mỗi dòng ListView phức tạp hơn tức là gồm nhiều thành phần hơn thì nên dùng một mảng để giữ tất cả các ID của các TextView trong. Từng cách làm sẽ được nói trong các phần sau. 

Cú pháp sử dụng ArrayAdapter:

  ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

1. context: 

Tham số đầu tiên là context dùng để tham chiếu đến lớp hiện tại.Thông thường sử dụng từ khóa this. Ngoài ra, chúng ta cũng có thể sử dụng getApplicationContext(), getActivity() để thay thế từ khóa this.  getApplicationContext(), được sử dụng trong Activity, còn getActivity() được sử dụng trong Frament.

Ví dụ sau thiết lập lớp hiện tại trong Adapter
 

  ArrayAdapter arrayAdapter = new ArrayAdapter(this, int resource, int textViewResourceId, T[] objects);

2. resource:

Tham số thứ 2 là tài nguyên (resource) id được sử dụng thiết lập các danh sách trong Layout. Trong Layout có thể TextViewImageViewButton .v.v

Ví dụ sau chúng ta tạo một Layout có tên custom_list_items.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="wrap_content">        <ImageView          android:id="@+id/imageView"          android:layout_width="50dp"          android:layout_height="50dp"          android:padding="5dp"          android:layout_alignParentRight="true"          android:layout_marginRight="10dp"          android:src="@drawable/ic_launcher" />        <TextView          android:id="@+id/textView"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:padding="@dimen/activity_horizontal_margin"          android:text="Demo"          android:textColor="#000" />  </RelativeLayout>

Bây giờ, chúng ta truyền tham số thứ 3 cho ArrayAdapter

  ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_view_items, int textViewResourceId, T[] objects);

3. textViewResourceId:

Tham số thứ 3 dùng để hiển thị dữ liệu dạng TextView (Mặc định không khai báo tham số này).

Ví thiết lập tham số id là TextView

  ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_view_items, R.id.textView, T[] objects);

3. objects:

Tham số thứ 4 là nguồn dữ liệu kiểu mảng đối tượng, Chúng ta có thể lấy, thiết lập dữ liệu thông qua tham số này.

  String animalList[] = {"Lion","Tiger","Monkey","Elephant","Dog","Cat","Camel"};  ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_view_items, R.id.textView, animalList);

Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có một ListView. Trước tiên, chúng ta tạo 1 mảng dữ liệu, sau đó kiết nối với ListView thông qua đối tượng ArrayAdapter. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml thiết kế giao diện sau:

Bước 1: Tạo một project tên là ArrayAdapterFile->New->Android Application Project điền các thông tin ->Next ->Finish

Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code trong Relaytive Layout.

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context="hiepsiit.com.arrayadapter.MainActivity" >        <ListView          android:id="@+id/lstAnimal"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          android:layout_alignParentTop="true" >        </ListView>    </RelativeLayout>  

Bước 3: Mở src -> package -> MainActivity.java
Trong bước này chúng ta khởi tạo ListView.  Tiếp theo, chúng ta tạo 1 mảng dữ liệu và kết nối ListView thông qua đối tượng ArrayAdapter.

  package hiepsiit.com.arrayadapter;    import android.app.Activity;  import android.os.Bundle;  import android.view.Menu;  import android.view.MenuItem;  import android.widget.ArrayAdapter;  import android.widget.ListView;    public class MainActivity extends Activity {  	String animalList[] = {"Lion","Tiger","Monkey","Elephant","Dog","Cat","Camel"};  	ListView lstAnimal;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  		lstAnimal	=	(ListView)	findViewById(R.id.lstAnimal);  		ArrayAdapter<String> adapter	=	new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, animalList);  		lstAnimal.setAdapter(adapter);  				  	}    }  

 


Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11  and target sdk 21.


Kết quả khi chạy ứng dụng 


Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có một Spinner. Trước tiên, chúng ta tạo 1 mảng dữ liệu, sau đó kiết nối với Spinner thông qua đối tượng ArrayAdapter. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml thiết kế giao diện sau:

Bước 1: Tạo một project tên là SpinnerArrayAdapterFile->New->Android Application Project điền các thông tin ->Next ->Finish

Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code trong Relaytive Layout.

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context="hiepsiit.com.spinnerarrayadapter.MainActivity" >        <Spinner          android:id="@+id/spinner1"          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:layout_alignParentTop="true"          android:layout_marginTop="92dp" />    </RelativeLayout>  

Bước 3: Tạo mới một Activity simple_spinner_item.xml vào trong thư mục layout và thêm vào 1  widget TextView.

  <?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical" >        <TextView          android:id="@+id/textView1"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:background="#ff0"          android:text="TextView" />    </LinearLayout>  

Bước 4: Mở src -> package -> MainActivity.java
Trong bước này chúng ta khởi tạo Spinner.  Tiếp theo, chúng ta tạo 1 mảng dữ liệu và kết nối Spinner thông qua đối tượng ArrayAdapter. Trong bước này chúng ta cũng thiết lập sự kiện setOnItemSelectedListener(new OnItemSelectedListener() ) cho Spinner.

  package hiepsiit.com.spinnerarrayadapter;  import android.app.Activity;  import android.os.Bundle;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.view.View.OnClickListener;  import android.widget.AdapterView;  import android.widget.AdapterView.OnItemSelectedListener;  import android.widget.ArrayAdapter;  import android.widget.Spinner;  import android.widget.Toast;    public class MainActivity extends Activity {  	String animalList[] = {"Lion","Tiger","Monkey","Elephant","Dog","Cat","Camel"};  	Spinner spnAnimals;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  		spnAnimals	=	(Spinner)	findViewById(R.id.spinner1);  		ArrayAdapter<String> adapter	=	new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, animalList);  		spnAnimals.setAdapter(adapter);  		spnAnimals.setOnItemSelectedListener(new OnItemSelectedListener() {    			@Override  			public void onItemSelected(AdapterView<?> arg0, View arg1,  					int arg2, long arg3) {  				// TODO Auto-generated method stub  				Toast.makeText(getApplicationContext(), "Bạn đang chọn "+animalList[arg2], Toast.LENGTH_LONG).show();  			}    			@Override  			public void onNothingSelected(AdapterView<?> arg0) {  				// TODO Auto-generated method stub  				  			}  		});  	}    }  

 


Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11  and target sdk 21.


Kết quả khi chạy ứng dụng:

Click lên Spinner:

Chọn một mục trên Spinner:



Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com