Monday, September 11, 2017

Bài 4 – ListView

Nháy chuột phải vào com.bai.baidau, New > Class, đặt tên là forth, finish.
Sửa đi để nó trông như sau
public class forth extends Activity {
           @Override
            protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.ac4);

}
}
Dấu đỏ chỗ ac4 kệ nó, ta tạo nó ngay bây giờ.
Nháy chuột phải vào folder layout, New > Android XML File, ở cửa sổ bật ra đặt tên là ac4, finish.
Bây giờ copy toàn bộ đoạn sau vào file ac4.xml

<?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" >
    
<ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"        
        android:divider="#ff8f40"
        android:dividerHeight="1px"
        android:lineSpacingExtra="-8dp"
        android:singleLine="true"
        android:textColor="#00F" >
    </ListView>
     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:text="Đây là ListView"
        android:textColor="#800000"
        android:textSize="20sp" />
</LinearLayout>
   
Tiếp theo nháy đúp vào file AndroidManifest.xml để khai báo class forth, đúng tên gói.

Bây giờ vào class forth để code.
Đầu tiên khai báo ListView, mảng các chữ sẽ cho vào danh sách, cùng adapter
String[] qua = { "Pear","Banana", "Cashew", "Orange", "Water melon", "Peach", "Grape", "Mango", "Plum" };
 private ArrayAdapter<String> adapter;
Sau đó tham chiếu địa chỉ. Màn hình lúc này như sau.

Thêm dòng này để khi ta ấn chọn sẽ chỉ có một dòng hiện dấu xanh đã chọn.
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Tiếp theo gắn adapter để show danh sách lên.
 adapternewArrayAdapter<String>(forth.this,
             android.R.layout.simple_list_item_checked, qua);
   lv.setOnItemClickListener(new OnItemClickListener() {
              @Override
  public void onItemClick(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                             
                        }
                  });
  lv.setAdapter(adapter);
Nhấn Ctrl+Shift+O để nhập thư viện, sẽ hết lỗi đỏ. Class forth giờ trông như sau.

Quay lại MainActivity sửa chỗ nút Next b2 thành
Intent in = new Intent(MainActivity.this,forth.class);
startActivity(in);
Chạy thử, nhấn next, màn hình trông như sau nếu bạn làm đúng hết.

Chạm thử để thấy dấu xanh và không có gì, đó là vì trong lệnh setOnItemClickListener ta chưa code gì cả.
Để biết có ấn, ta sẽ code một cái gì đó, như cho hiện một thông báo Toast kèm số dòng đã ấn ra màn hình.
int sodong = arg2;
Toast.makeText(forth.this, "Bạn vừa ấn vào dòng "+sodong,
 Toast.LENGTH_SHORT).show();


Bạn chạy rồi ấn dòng đầu tiên, nó báo bạn vừa dòng 0, đó chính là ý nghĩa của chỉ số mảng, đối với chương trình, nó hiểu 0 tức là dòng 1, nên để hiện đúng dòng, bạn tự thêm vào sodong=arg2+1 sẽ đúng.
Thực tế, bạn có thể bật ra một màn hình mới khi ấn vào dòng, hoặc cứ để chấm xanh, chỉ lấy số dòng rồi thêm mấy nút ở dưới như xóa dòng chẳng hạn, tùy ứng dụng bạn muốn làm gì.
Để mất chữ baidau trên màn hình, bạn thêm dòng sau vào trên dòng setContentView(R.layout.ac4);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Import thư viện mới vào, rồi chạy thử, sẽ mất tiêu đề cùng con Android xanh ở trên.

Bây giờ quay lại file ac4.xml, hãy nhìn dòng android:textColor="#00F"

Rõ ràng ta tô màu xanh mà chữ cứ hiện màu đen là sao? Đó là vì bạn không thể tô màu chữ cho ListView trong file xml được. Phải làm cách khác, tôi sẽ nói trong các bài nâng cao sau này.

Như vậy bài này ta đã làm một Listview cơ bản, nó rất hay dùng trong các ứng dụng sau này.

No comments:

Post a Comment