Học lập trình android - Control ListView trong Android 1
Trong list bài hướng dẫn Học lập trình Android cơ bản thì không thể bỏ qua phần kiến thức về control ListView. Đây là một control quan trọng được sử dụng rất nhiều khi lập trình ứng dụng android.
Trong một ứng dụng bạn cần lưu trữ và hiển thị danh sách các thông tin thì chúng ta sử dụng control ListView. ListView được dùng để hiện thị các danh sách, được truyền vào từ các đối tượng được gọi ra bởi các lớp trong Android.
Với mức độ tìm hiểu các vị dụ đơn giản thì chúng ta chỉ cần sử dụng ListView có sẵn của Android là được. Hôm nay chúng ta sẽ xét 5 trường hợp sử dụng ListView và đây cũng là những cách ta xây dựng listview khác nhau:
1. Sử dụng ListView control với mảng dữ liệu định sẵn:
Xét ví dụ đơn giản: hiện thị mảng dữ liệu lên trên ListView. Giao diện như hình sau:
Bước 2: Màn hình New Android XML hiển thị lên, bạn chọn thông số giống như hình bên dưới, đặt tên tập tin là mystrings.xml rồi nhấn nút Finish:
Kểt quả khi bấm nút Figgisn và ta có kết quả:
Chúng ta có thể thêm dữ liệu vào tệp tin nhưng chúng tôi muốn hướng dẫn các bạn tạo 1 tệp XML mới và thêm dữ liệu vào đó.
Bước 3: chọn tab Resource ở hình trên:
Bước 4: Bấm nút “Add…” ở màn hình trên để thêm String-Array:
Bước 5: Đặt tên cho String Array, sau khi nhấn OK thì màn hình bên dưới hiển thị ra, bạn đặt tên String Array này là myarray rồi nhấn ctrl+s để lưu:
Bước 6: Thêm các phần tử vào String Array, tiếp tục bấm nút Add ở màn hình bên trên:
- Sau khi nhấn OK thì nó sẽ cho phép bạn nhập giá trị cho phần tử.
- Bạn cứ lặp liên tục thao tác ở bước 6 này, thêm bao nhiêu phần tử thì click từng đó lần Add, ở đây là Tôi thêm 3 phần tử, bạn xem hình:
– Xem nội dung XML:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string-array name=”myarray”>
<item >Trần Văn Tèo</item>
<item >Nguyễn Thị Tẹt</item>
<item >Hồ Văn Hiến</item>
</string-array>
</resources>
Đã tạo xong một tập tin XML và biết cách tạo String Array cũng như các phần tử nằm trong đó. Bây giòe chings ta sẽ dựa vào myarray để đọc toàn bộ dữ liệu (myarray khi bạn tạo ra ở trên thì nó cũng được tạo ra trong gen)
Mở MainActivity lên: code tương tự trường hợp 1, chỉ khác chúng ta sử dụng lệnh đọc dữ lieeujtuwf XML đổ về 1 mảng: final String arr[]=getResources().getStringArray(R.array.myarray) (thay dòng 17 ở trường hợp 1 của MainActivity bằng dòng lệnh trên.)
3. Sử dụng ArrayList và Listview control:
Hướng dẫn cách sử dụng ArrayList để lưu trữ dữ liệu và đổ lên ListView như thế nào, bạn xem giao diện của chương trình:
Mô tả:
+ Nhập dữ liệu và nhấn nút “Nhập” thì sẽ đưa vào ArrayList và hiển thị lên ListView
+ Nhấn vào phần tử nào thì hiển thị vị trí và giá trị của phần tử đó lên TextView
+ Nhấn thật lâu (long click ) vào phần tử nào đó trên ListView thì sẽ xóa phần tử đó.
Tạo Android Project tên: Vidu_ListView_ArrayList,
Xem Layout XML của ứng dụng (activity_main.xml):
<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”
tools:context=”.MainActivity” >
<EditText
android:id=”@+id/txtTen” android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:layout_alignParentTop=”true”
android:inputType=”text” android:layout_toRightOf=”@+id/textView1″ android:ems=”10″ />
<TextView
android:id=”@+id/textView1″ android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:layout_alignBaseline=”@+id/txtTen”
android:layout_alignBottom=”@+id/txtTen” android:layout_alignParentLeft=”true”
android:background=”#deb887″ android:text=”Nhập tên:” />
<Button
android:id=”@+id/btnNhap” android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:layout_alignRight=”@+id/txtTen”
android:layout_below=”@+id/txtTen” android:layout_toRightOf=”@+id/textView1″
android:textAlignment=”center” android:text=”Nhập” />
<TextView
android:id=”@+id/txtselection” android:layout_width=”match_parent”
android:layout_height=”wrap_content” android:layout_alignParentLeft=”true
android:layout_below=”@+id/btnNhap” android:background=”#007380″ />
<ListView
android:id=”@+id/lvperson” android:layout_width=”match_parent”
android:layout_height=”wrap_content” android:layout_alignParentLeft=”true”
android:layout_below=”@+id/txtselection” android:background=”#cccccc” >
</ListView>
</RelativeLayout>
Xem MainActivity.java:
package tranduythanh.com;
import java.util.ArrayList; import android.os.Bundle;
import android.app.Activity; import android.view.View;
import android.widget.AdapterView; import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.EditText;
import android.widget.ListView; import android.widget.TextView;
public class MainActivity extends Activity {
EditText txtten; TextView txtchon;
Button btn; ListView lv;
ArrayList<String>arrList=null; ArrayAdapter<String> adapter=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
txtten=(EditText) findViewById(R.id.txtTen); txtchon=(TextView) findViewById(R.id.txtselection);
lv=(ListView) findViewById(R.id.lvperson);
//1. Tạo ArrayList object
arrList=new ArrayList<String>();
//2. Gán Data Source (ArrayList object) vào ArrayAdapter
adapter=new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, arrList);
//3. gán Adapter vào ListView
lv.setAdapter(adapter);
btn=(Button) findViewById(R.id.btnNhap);
//4. Xử lý sự kiện nhấn nút Nhập
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) { arrList.add(txtten.getText()+””); adapter.notifyDataSetChanged(); }
});
//5. Xử lý sự kiện chọn một phần tử trong ListView
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick( AdapterView<?> arg0,View arg1, int arg2,long arg3) {
txtchon.setText(“position : “+ arg2+ “; value =”+arrList.get(arg2)); }
});
//6. xử lý sự kiện Long click
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
arrList.remove(arg2);//xóa phần tử thứ arg2
adapter.notifyDataSetChanged();
return false; }
});}}
Giải thích code:
– hàm adapter.notifyDataSetChanged(); Bạn chú ý là ArrayList được gán vào adapter nên mọi sự thay đổi trong ArrayList thì adapter đều nhận biết được. Khi có sự thay đổi trong ArrayList bạn chỉ cần gọi notifyDataSetChanged thì ListView sẽ được cập nhật (bởi vì Adapter được gắn vào ListView).
– Sự kiện setOnItemLongClickListener, được gắn cho ListView Item, khi nhấn lâu từ 2.5 tới 3 giây thì sự kiện này sẽ sảy ra. Tương tự như setOnItemClickListener , đối số có tên arg2 được dùng để xác định được vị trí của phần tử nằm trong ArrayList.
Trong một ứng dụng bạn cần lưu trữ và hiển thị danh sách các thông tin thì chúng ta sử dụng control ListView. ListView được dùng để hiện thị các danh sách, được truyền vào từ các đối tượng được gọi ra bởi các lớp trong Android.
Với mức độ tìm hiểu các vị dụ đơn giản thì chúng ta chỉ cần sử dụng ListView có sẵn của Android là được. Hôm nay chúng ta sẽ xét 5 trường hợp sử dụng ListView và đây cũng là những cách ta xây dựng listview khác nhau:
1. Sử dụng ListView control với mảng dữ liệu định sẵn:
Xét ví dụ đơn giản: hiện thị mảng dữ liệu lên trên ListView. Giao diện như hình sau:
Với giao diện trên chúng ta sử dụng 2 control:
– ListView: dùng để hiển thị mảng dữ liệu
– TextVew (có màu xanh lục): dùng để hiển thị vị trí và giá trị của phần tử được chọn trong ListView
Bạn tạo một android project: Vidu_ListView_HardCode_Array, lựa chọn layout phù hợp và kéo thả các control vào giao diện:
– ListView: dùng để hiển thị mảng dữ liệu
– TextVew (có màu xanh lục): dùng để hiển thị vị trí và giá trị của phần tử được chọn trong ListView
Bạn tạo một android project: Vidu_ListView_HardCode_Array, lựa chọn layout phù hợp và kéo thả các control vào giao diện:
Dưới đây là nội dung của activity_main.xml:
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:id=”@+id/LinearLayout1″
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
tools:context=”.MainActivity” >
<TextView
android:id=”@+id/txtselection”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:background=”#dd0230dd”
android:hint=”Selected person here” />
<ListView
android:id=”@+id/lvperson”
android:layout_width=”match_parent”
android:layout_height=”wrap_content” >
</ListView>
</LinearLayout>
Đặt id cho ListView là lvperson, chúng ta có thể định dạng thêm một số đặc tính khác, với mức độ cơ bản thì chúng ta chỉ cần hiển thị được dữ liệu lên giao diện.
Sau đây là code chúng ta xử lý trong MainActivity.java:
package tranduythanh.com;
import android.os.Bundle; import android.app.Activity;
import android.view.View; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1. Khởi tạo dữ liệu cho mảng arr (còn gọi là data source)
final String arr[]={“Teo”,”Ty”,”Bin”,”Bo”};
//2. Lấy đối tượng Listview dựa vào id
ListView lv=(ListView) findViewById(R.id.lvperson);
//3. Gán Data source vào ArrayAdapter
ArrayAdapter<String>adapter=new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, arr);
//4. Đưa Data source vào ListView lv.setAdapter(adapter);
final TextView txt=(TextView) findViewById(R.id.txtselection);
//5. Thiết lập sự kiện cho Listview, khi chọn phần tử nào thì hiển thị lên TextView
lv.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//đối số arg2 là vị trí phần tử trong Data Source (arr)
txt.setText(“position :”+arg2+” ; value =”+arr[arg2]);
}});
}}
Chú ý trong đoạn code chúng ta sẽ giải thích vè lệnh ArrayAdapter:
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, adroid.R.layout.simple_list_item_1, arr);
Giải thích: dữ liệu từ Data source (arr) sẽ được gắn vào ArrayAdapter, ArrayAdapter sẽ gắn vào ListView. Đối số đầu tiên của constructor ArrayAdapter : this, chính là context của Activity hiện tại, bạn có thể viết MainActivity.this (nếu bạn viết như thế này thì ở bất kỳ vị trí nào nó cũng hiểu là context của MainActivity, do đó các bạn nên viết như thế này để bạn có thể copy paste nó tới bất kỳ vị trí nào thì nó cũng hiểu). Đối số thứ 2 android.R.layout.simple_list_item_1: đây là layout ListView của Android xây dựng sẵn, đối số này được lưu trữ trong SDK/platform/android-ap (x)/data/res/layout/simple_list_item_1.xml.
Đối số thứ 3 chính là arr (data source), bạn có thể truyền vào ArrayList.
Ngoài ra chúng ta có interface AdapterView.OnItemClickListener, nó dùng để thiết lập sự kiện cho listview, interface này có 1 phương thức trừu tượng là onItemClick nên ta override nó về xử lý trong này. Để mở chúng ta nhấn tổ hợp phím Ctrl + 1chọn add unimplement method là nó tự xuất hiện
2. Sử dụng ListView với mạng dữ liệu được lưu trong XML:
Giao diện và xử lý sự kiện trong trường hợp này là y xì trường hợp 1. Chỉ khác ở chỗ là dữ liệu sẽ được load từ XML, nên Tôi chỉ hướng dẫn cách tạo String – Array trong XML và cách load String-Array trong coding như thế nào.
Tạo 1 Android Project tên là: Vidu_ListView_Xml_Array
Bước 1: Bấm chuột phải vào thư mục values của Project/ chọn New/Android XML File:
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:id=”@+id/LinearLayout1″
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
tools:context=”.MainActivity” >
<TextView
android:id=”@+id/txtselection”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:background=”#dd0230dd”
android:hint=”Selected person here” />
<ListView
android:id=”@+id/lvperson”
android:layout_width=”match_parent”
android:layout_height=”wrap_content” >
</ListView>
</LinearLayout>
Đặt id cho ListView là lvperson, chúng ta có thể định dạng thêm một số đặc tính khác, với mức độ cơ bản thì chúng ta chỉ cần hiển thị được dữ liệu lên giao diện.
Sau đây là code chúng ta xử lý trong MainActivity.java:
package tranduythanh.com;
import android.os.Bundle; import android.app.Activity;
import android.view.View; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1. Khởi tạo dữ liệu cho mảng arr (còn gọi là data source)
final String arr[]={“Teo”,”Ty”,”Bin”,”Bo”};
//2. Lấy đối tượng Listview dựa vào id
ListView lv=(ListView) findViewById(R.id.lvperson);
//3. Gán Data source vào ArrayAdapter
ArrayAdapter<String>adapter=new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, arr);
//4. Đưa Data source vào ListView lv.setAdapter(adapter);
final TextView txt=(TextView) findViewById(R.id.txtselection);
//5. Thiết lập sự kiện cho Listview, khi chọn phần tử nào thì hiển thị lên TextView
lv.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//đối số arg2 là vị trí phần tử trong Data Source (arr)
txt.setText(“position :”+arg2+” ; value =”+arr[arg2]);
}});
}}
Chú ý trong đoạn code chúng ta sẽ giải thích vè lệnh ArrayAdapter:
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, adroid.R.layout.simple_list_item_1, arr);
Giải thích: dữ liệu từ Data source (arr) sẽ được gắn vào ArrayAdapter, ArrayAdapter sẽ gắn vào ListView. Đối số đầu tiên của constructor ArrayAdapter : this, chính là context của Activity hiện tại, bạn có thể viết MainActivity.this (nếu bạn viết như thế này thì ở bất kỳ vị trí nào nó cũng hiểu là context của MainActivity, do đó các bạn nên viết như thế này để bạn có thể copy paste nó tới bất kỳ vị trí nào thì nó cũng hiểu). Đối số thứ 2 android.R.layout.simple_list_item_1: đây là layout ListView của Android xây dựng sẵn, đối số này được lưu trữ trong SDK/platform/android-ap (x)/data/res/layout/simple_list_item_1.xml.
Đối số thứ 3 chính là arr (data source), bạn có thể truyền vào ArrayList.
Ngoài ra chúng ta có interface AdapterView.OnItemClickListener, nó dùng để thiết lập sự kiện cho listview, interface này có 1 phương thức trừu tượng là onItemClick nên ta override nó về xử lý trong này. Để mở chúng ta nhấn tổ hợp phím Ctrl + 1chọn add unimplement method là nó tự xuất hiện
2. Sử dụng ListView với mạng dữ liệu được lưu trong XML:
Giao diện và xử lý sự kiện trong trường hợp này là y xì trường hợp 1. Chỉ khác ở chỗ là dữ liệu sẽ được load từ XML, nên Tôi chỉ hướng dẫn cách tạo String – Array trong XML và cách load String-Array trong coding như thế nào.
Tạo 1 Android Project tên là: Vidu_ListView_Xml_Array
Bước 1: Bấm chuột phải vào thư mục values của Project/ chọn New/Android XML File:
Bước 2: Màn hình New Android XML hiển thị lên, bạn chọn thông số giống như hình bên dưới, đặt tên tập tin là mystrings.xml rồi nhấn nút Finish:
Kểt quả khi bấm nút Figgisn và ta có kết quả:
Chúng ta có thể thêm dữ liệu vào tệp tin nhưng chúng tôi muốn hướng dẫn các bạn tạo 1 tệp XML mới và thêm dữ liệu vào đó.
Bước 3: chọn tab Resource ở hình trên:
Bước 4: Bấm nút “Add…” ở màn hình trên để thêm String-Array:
Bước 5: Đặt tên cho String Array, sau khi nhấn OK thì màn hình bên dưới hiển thị ra, bạn đặt tên String Array này là myarray rồi nhấn ctrl+s để lưu:
Bước 6: Thêm các phần tử vào String Array, tiếp tục bấm nút Add ở màn hình bên trên:
- Sau khi nhấn OK thì nó sẽ cho phép bạn nhập giá trị cho phần tử.
- Bạn cứ lặp liên tục thao tác ở bước 6 này, thêm bao nhiêu phần tử thì click từng đó lần Add, ở đây là Tôi thêm 3 phần tử, bạn xem hình:
– Xem nội dung XML:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string-array name=”myarray”>
<item >Trần Văn Tèo</item>
<item >Nguyễn Thị Tẹt</item>
<item >Hồ Văn Hiến</item>
</string-array>
</resources>
Đã tạo xong một tập tin XML và biết cách tạo String Array cũng như các phần tử nằm trong đó. Bây giòe chings ta sẽ dựa vào myarray để đọc toàn bộ dữ liệu (myarray khi bạn tạo ra ở trên thì nó cũng được tạo ra trong gen)
Mở MainActivity lên: code tương tự trường hợp 1, chỉ khác chúng ta sử dụng lệnh đọc dữ lieeujtuwf XML đổ về 1 mảng: final String arr[]=getResources().getStringArray(R.array.myarray) (thay dòng 17 ở trường hợp 1 của MainActivity bằng dòng lệnh trên.)
3. Sử dụng ArrayList và Listview control:
Hướng dẫn cách sử dụng ArrayList để lưu trữ dữ liệu và đổ lên ListView như thế nào, bạn xem giao diện của chương trình:
Mô tả:
+ Nhập dữ liệu và nhấn nút “Nhập” thì sẽ đưa vào ArrayList và hiển thị lên ListView
+ Nhấn vào phần tử nào thì hiển thị vị trí và giá trị của phần tử đó lên TextView
+ Nhấn thật lâu (long click ) vào phần tử nào đó trên ListView thì sẽ xóa phần tử đó.
Tạo Android Project tên: Vidu_ListView_ArrayList,
Xem Layout XML của ứng dụng (activity_main.xml):
<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”
tools:context=”.MainActivity” >
<EditText
android:id=”@+id/txtTen” android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:layout_alignParentTop=”true”
android:inputType=”text” android:layout_toRightOf=”@+id/textView1″ android:ems=”10″ />
<TextView
android:id=”@+id/textView1″ android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:layout_alignBaseline=”@+id/txtTen”
android:layout_alignBottom=”@+id/txtTen” android:layout_alignParentLeft=”true”
android:background=”#deb887″ android:text=”Nhập tên:” />
<Button
android:id=”@+id/btnNhap” android:layout_width=”wrap_content”
android:layout_height=”wrap_content” android:layout_alignRight=”@+id/txtTen”
android:layout_below=”@+id/txtTen” android:layout_toRightOf=”@+id/textView1″
android:textAlignment=”center” android:text=”Nhập” />
<TextView
android:id=”@+id/txtselection” android:layout_width=”match_parent”
android:layout_height=”wrap_content” android:layout_alignParentLeft=”true
android:layout_below=”@+id/btnNhap” android:background=”#007380″ />
<ListView
android:id=”@+id/lvperson” android:layout_width=”match_parent”
android:layout_height=”wrap_content” android:layout_alignParentLeft=”true”
android:layout_below=”@+id/txtselection” android:background=”#cccccc” >
</ListView>
</RelativeLayout>
Xem MainActivity.java:
package tranduythanh.com;
import java.util.ArrayList; import android.os.Bundle;
import android.app.Activity; import android.view.View;
import android.widget.AdapterView; import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.EditText;
import android.widget.ListView; import android.widget.TextView;
public class MainActivity extends Activity {
EditText txtten; TextView txtchon;
Button btn; ListView lv;
ArrayList<String>arrList=null; ArrayAdapter<String> adapter=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
txtten=(EditText) findViewById(R.id.txtTen); txtchon=(TextView) findViewById(R.id.txtselection);
lv=(ListView) findViewById(R.id.lvperson);
//1. Tạo ArrayList object
arrList=new ArrayList<String>();
//2. Gán Data Source (ArrayList object) vào ArrayAdapter
adapter=new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, arrList);
//3. gán Adapter vào ListView
lv.setAdapter(adapter);
btn=(Button) findViewById(R.id.btnNhap);
//4. Xử lý sự kiện nhấn nút Nhập
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) { arrList.add(txtten.getText()+””); adapter.notifyDataSetChanged(); }
});
//5. Xử lý sự kiện chọn một phần tử trong ListView
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick( AdapterView<?> arg0,View arg1, int arg2,long arg3) {
txtchon.setText(“position : “+ arg2+ “; value =”+arrList.get(arg2)); }
});
//6. xử lý sự kiện Long click
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
arrList.remove(arg2);//xóa phần tử thứ arg2
adapter.notifyDataSetChanged();
return false; }
});}}
Giải thích code:
– hàm adapter.notifyDataSetChanged(); Bạn chú ý là ArrayList được gán vào adapter nên mọi sự thay đổi trong ArrayList thì adapter đều nhận biết được. Khi có sự thay đổi trong ArrayList bạn chỉ cần gọi notifyDataSetChanged thì ListView sẽ được cập nhật (bởi vì Adapter được gắn vào ListView).
– Sự kiện setOnItemLongClickListener, được gắn cho ListView Item, khi nhấn lâu từ 2.5 tới 3 giây thì sự kiện này sẽ sảy ra. Tương tự như setOnItemClickListener , đối số có tên arg2 được dùng để xác định được vị trí của phần tử nằm trong ArrayList.
0 nhận xét: