01/10/2018, 09:16

Bắt sự kiện custom Girdview trong Android

Mấy cái bàn 1 bàn 2… đó mình dùng custom gridview hiển thị nó trong 1 cái fragment.
M.n ai biết cách bắt sự kiện cho từng item, và làm sao lấy được id của từng cái để dùng id đó truy vấn csdl.

Hình ảnh và Text của từng item mình xử lý trong Adapter hết á.
Fragment chỉ gọi lại sử dụng thôi.
Help me! Thanks!

Tâm Ninja viết 11:30 ngày 01/10/2018

Help me! Thanks!

Nhìn cái dòng trên là không muốn trả lời rồi…

  • Thứ nhất là đừng học dùng GridView nữa. Biết thì biết rồi giờ chuyển qua dùng RecycleView đi.
  • Thứ hai là nội dung mong muốn là bắt sự kiện onClick lên các item thì lấy được thông tin của item đó đúng không?

Vì đã dùng GridView nên sẽ hướng dẫn theo kiểu GridView:
##Cách thứ nhất:

  • Bản thân Adapter lưu giữ một list các EntityObject chứa thông tin của các item ví dụ:
public class TableEntity {
    public String id;
    // Them may cai cho no nhieu de lam vi du cho bai toan tong quat thoi.
    public long long;
    public long lat;
}
public class CustomAdapter extends BaseAdapter {
    ...
    private List<TableEntity> mListTables = new ArrayList()<>;
    ...
    public TableEntity getItem(int poision) {
        if (position < 0 || posission >= getCount() {
            return null;
        } else {
            return mListTables.getItem(posision);
        }
    }
    ...
}

Bắt sự kiện onItemClickListener của GridView lấy ra posision của item rồi gọi CustomAdapter#getItem(int) để lấy ra được TableEntity tương ứng.
##Cách thứ hai:
Cách trên mang tính chính thống nhưng mà một số khách hàng bựa bắt là phải bắt sự kiện dành View nằm trong GridView item. Nghĩa là bấm vào cái màu xanh thì được mà bấm vào chữ thì không cho. Nếu thế thì phải dùng tricks. Android OS cung cấp một phương thức là View#setTag(Object). Lúc này truyềnTableEntity vào trong Tag của View đang được setOnClickListener. Tại sự kiện onClick sẽ dùng view để getData ra.
##Cách thứ ba:
Dùng các thư viện bindView của bên thứ ba.

Bài liên quan
0