LISTVIEW TRONG ANDROID
1. Giới thiệu
Chào các bạn chúng ta lại gặp nhau trong Series Android truyền kì rồi. Hôm nay mình xin giới thiệu với các bạn một component của Android đó chính là Listview. Cái này chắc bạn cũng thấy thường xuyên rồi ví dụ như danh sach bài hát trong phần mềm nghe nhạc trong máy bạn chẳng hạn bạn thấy các bài hát có trong máy bạn sẽ được hiển thị thành 1 danh sách từ trên xuông dưới đúng không nào và bạn có thể vuốt để chọn các bài hát từ danh sách ấy.
Trong Android để hiển thị danh sách như vậy ta có thể sử dụng đến ListView, và trong Android sẽ có hai cách sử dụng Listview là sử dụng Listview mặc định và custom Listview.
2. Sử dụng ListView mặc định
Với cách này chúng ta sẽ sử dụng ListView
có sẵn của Android
nó cũng khá là đơn giản.
Đầu tiên mình cũng tạo một file activity_main.xml và thêm vào trong layout một cái Listview
như bình thường.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.tuandc.akinosora.listviewexample.MainActivity"> <ListView android:id="@+id/Listview" android:layout_width="368dp" android:layout_height="495dp" android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> |
Sau đó tại MainActivity.java
ta sẽ làm như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com.tuandc.akinosora.listviewexample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] mobileArray = {"Android","IPhone","WindowsMobile","Blackberry", "WebOS","Ubuntu","Windows7","Max OS X"};// Tạo mảng chứa các đồi tượng muốn hiển thị. listView = (ListView) findViewById(R.id.Listviewex); final Adapter adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, mobileArray);// Khởi tạo một ArrayAdapter với các tham số như sau: Activity, Layout item(layout mặc định của hệ thống), mảng các đối tượng. listView.setAdapter((ListAdapter) adapter);// gán Adapter vừ tạo cho Listview. // Gán sự kiện Click Item cho Listview. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(MainActivity.this, adapter.getItem(i).toString(), Toast.LENGTH_SHORT).show();// Toast các Item lấy được từ adpter của Listview } }); } } |
Kết quả:
Như các bạn thấy để sử dụng Listview
ta cần tạo mảng một chiều các đối tượng muốn hiển thị và tạo một Adapter
để gán cái Adapter
này cho Listview
là ta có thể sự dụng được Listview rồi.
3. Custom Listview
Trong thực tế đôi khi nếu chỉ sử dụng Listview
Mặc định của Android thôi thì chưa đủ mà đôi khi bạn sẽ cần chỉnh sửa nó để phù hợp với yêu cầu của mình như thêm các hiệu ứng cho các item
hay hiển thị Listview
theo ý mình muốn….
Vậy để làm nó ta sẽ làm như thế nào.
File activity_main xml thì sẽ không có gì thay đổi và chúng ta sẽ tạo một file xml layout của các item
sẽ hiển thị trong Listview
.
File item_mobile.xml
1 |
<?xml version="1.0" encoding="utf-8"?> |
1 2 3 4 5 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:layout_marginTop="10dp"> |
1 |
<ImageView android:layout_width="50dp" android:layout_height="50dp" android:src="@drawable/phone" /> <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Name" android:textSize="15pt" /> </LinearLayout> |
Sau đó ta sẽ tạo thêm một File Adapter khác kế thừa lớp ArrayAdapter
File MobileAdapter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package com.tuandc.akinosora.listviewexample; import android.content.Context; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import android.widget.Toast; /** * Created by Akinosora on 25/09/2017. */ public class MobileListAdapter extends ArrayAdapter { private Context context_; private int resource_; private String[] objects_; public MobileListAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull String[] objects) { super(context, resource, objects); this.context_ = context; this.resource_ = resource; this.objects_ = objects; } @NonNull @Override public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) { View inflate = LayoutInflater.from(context_).inflate(resource_, parent, false);// Chuyển đổi File XML ra mã Java TextView Name = inflate.findViewById(R.id.name);// ánh xạ các control Name.setText(objects_[position]);//gán các dữ liệu lấy từ mảng lên các control // Gán sự kiên lên các controll trong layout item Name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context_, objects_[position], Toast.LENGTH_SHORT).show(); } }); return inflate;// trả về View } } |
File MainActivity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package com.tuandc.akinosora.listviewexample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] mobileArray = {"Android","IPhone","WindowsMobile","Blackberry", "WebOS","Ubuntu","Windows7","Max OS X"};// Tạo mảng chứa các đồi tượng muốn hiển thị. listView = (ListView) findViewById(R.id.Listviewex); MobileListAdapter adpter = new MobileListAdapter(this, R.layout.item_mobile, mobileArray);// Khởi tạo Adapter listView.setAdapter(adpter); } } |
Kết quả:
Như vậy tôi đã giới thiệu với các bạn về cách sử dụng Listview
trong Android. Cảm ơn các bạn đã theo dõi và hẹn gặp các bạn trong các chương tiếp theo của Android truyền kì.
4. Tổng kết