Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt

Xây dụng UI code cho itemListAdapter - Tài liệu lập trình android

Tài liệu lập trình android

← Toàn bộ tài liệu


Bước 17: Xây dụng UI code cho itemListAdapter

Bài 17/36 Xem dạng sách

Phần này là phần dây dựng các tính năng thao tác với 1 item

Đầu tiên chúng ta cần phải xây dựng một adapter : hiểu nôm na là adapter là một cầu nối dữ liệu giữa data và hiển thị lên app

Chúng ta cần phải tạo một thư mục có tên là item trong thư mục app/src/main/java/com/vantinviet/adayroionline/ui

khi đã có thư mục item rồi chúng ta cần tạo một thư mục trong item có tên là adapter.

Tiếp theo chúng ta sẽ cần phải tạo file java có tên là ItemListAdapter.java (Nhắc lại mội lần nữa về item) ví dụ CarListAdapter.java, PetListAdapter.java: Chú là các chữ cái phải viết hóa nhé như Car. Pet

Nơi đặt file ItemListAdapter.java app/src/main/java/com/vantinviet/adayroionline/ui/item/adapter

 Nội dung file:

package com.vantinviet.adayroionline.ui.item.adapter;
/*
Đưa vào một số thư viện để code, trong quá trình code các bạn chú ý không phải copy nguyên và cũng sẽ có những thứ các bạn cần và không cần
*/
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.Toast;

import androidx.databinding.DataBindingUtil;


import com.squareup.picasso.Picasso;

import com.vantinviet.adayroionline.Lib.Factory;
import com.vantinviet.adayroionline.R;
/*
Các bạn lưu ý ở đây các bạn nhìn thấy có hai cái item nhưng các bạn chỉ đối tên cái item bôi đậm ví dụ ItemItemBinding, ItemPetBinding
*/
import com.vantinviet.adayroionline.databinding.ItemItemListAdapterBinding; // Item này là một đối tượng layout lát nữa chúng ta sẽ tạo đối tượng layout này. nếu nó đang lỗi các bạn cứ để nguyên đó không cần phải lo lắng
import com.vantinviet.adayroionline.ui.common.DataBoundListAdapter;
import com.vantinviet.adayroionline.ui.common.DataBoundViewHolder;
import com.vantinviet.adayroionline.utils.CircleTransform;
import com.vantinviet.adayroionline.utils.Constants;
import com.vantinviet.adayroionline.utils.Objects;
import com.vantinviet.adayroionline.utils.Utils;
import com.vantinviet.adayroionline.viewobject.Item; //Đối tượng view object này chúng ta đã tạo ra ở bước 2 rồi, giờ cũng cần phải đưa vào

public class ItemListAdapter extends DataBoundListAdapter<Item /* Truyền đối tượng item vào */, ItemItemListAdapterBinding /*Nhớ đọc kỹ ở phần trên để thay thế cho đúng*/> {

private final androidx.databinding.DataBindingComponent dataBindingComponent;
private final ItemClickCallback callback; // khai báo một sự kiện click (nhấn vào danh sách)
private DiffUtilDispatchedInterface diffUtilDispatchedInterface = null;


public ItemListAdapter(androidx.databinding.DataBindingComponent dataBindingComponent,
ItemClickCallback callback/*tham số callback để khi người dùng nhấn vào*/) {
this.dataBindingComponent = dataBindingComponent;
this.callback = callback; //Tạo một đối tượng click callback

}
//Một số phương thức ghi đè cần có
@Override
protected ItemItemListAdapterBinding createBinding(ViewGroup parent) {
ItemItemListAdapterBinding binding = DataBindingUtil
.inflate(LayoutInflater.from(parent.getContext()),
R.layout.item_item_list_adapter/* item_item_list_adapter đã được tạo ở bước 5.2 */, parent, false,
dataBindingComponent);

binding.getRoot().setOnClickListener(v -> {

});
return binding;
}

// For general animation
@Override
public void bindView(DataBoundViewHolder<ItemItemListAdapterBinding> holder, int position) {
super.bindView(holder, position);

}

@Override
protected void dispatched() {
if (diffUtilDispatchedInterface != null) {
diffUtilDispatchedInterface.onDispatched();
}
}

@Override
protected void bind(ItemItemListAdapterBinding binding, Item item) {
//Bây giờ chúng ta sẽ bắt đầu hiển thị dữ liệu cho một item. ví dụ trong trường ví dụ trong trường hợp này chúng ta chỉ cần hiển thị item_name. như vậy các bạn sẽ phải có thuộc tính item_name, thì bạn cần phải bổ sung cho view object ở bước 2 nhé
//Utils.psLog("item.item_name",item.item_name);
//set giá trị cho text
binding.itemNameTextView.setText(item.item_name);

Utils.psLog("some log","content log");


}

/*
Một số phương thức này để kiểm tra khi cần update dữ liệu hiển thị
*/
@Override
protected boolean areItemsTheSame(Item oldItem, Item newItem) {
return Objects.equals(oldItem.id, newItem.id)
&& oldItem.item_name.equals(newItem.item_name);
}

@Override
protected boolean areContentsTheSame(Item oldItem, Item newItem) {
return Objects.equals(oldItem.id, newItem.id)
&& oldItem.item_name.equals(newItem.item_name);
}

public interface ItemClickCallback {
void onClick(Item item);
}


}
Chú ý: các item là một đối tượng cụ thể mà chúng ta muốn sử lý ví dụ car, pet

Sơ đồ quan hệ các bảng

Table Name: {{table.name}}
Num Name Type
{{field_index+1}}
{{field.name}} {{field.type}}

Hỏi đáp

Gửi với tên {{comment_full_name}}

Chưa có câu hỏi nào cho bài này.

Zalo 0936.006.058 Hotline 0936.006.058