Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
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
Chưa có câu hỏi nào cho bài này.