Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
Tên file: CarListAdapter.java
Nơi lưu file: java/com/vantinviet/adayroionline/ui/car/list/adapter (Bạn cần tạo các sub package nhé)
Nội dung file:
package com.vantinviet.adayroionline.ui.car.list.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.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingComponent;
import androidx.databinding.DataBindingUtil;
import com.vantinviet.adayroionline.R;
/*
Các bạn lưu ý ở đây các bạn nhìn thấy có hai cái car nhưng các bạn chỉ đối tên cái car bôi đậm ví dụ CarCarBinding, CarPetBinding
*/
import com.vantinviet.adayroionline.databinding.ItemCarListAdapterBinding; // Car 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.car.list.CarListFragment;
import com.vantinviet.adayroionline.ui.common.DataBoundListAdapter;
import com.vantinviet.adayroionline.ui.common.DataBoundViewHolder;
import com.vantinviet.adayroionline.utils.Objects;
import com.vantinviet.adayroionline.utils.Utils;
import com.vantinviet.adayroionline.viewobject.Car; //Đố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 CarListAdapter extends DataBoundListAdapter<Car /* Truyền đối tượng car vào */, ItemCarListAdapterBinding /*Nhớ đọc kỹ ở phần trên để thay thế cho đúng*/> {
private final androidx.databinding.DataBindingComponent dataBindingComponent;
private final CarClickCallback carClickCallback; // khai báo một sự kiện click (nhấn vào danh sách)
private DiffUtilDispatchedInterface diffUtilDispatchedInterface = null;
public CarListAdapter(DataBindingComponent dataBindingComponent,
CarClickCallback callback,/*tham số callback để khi người dùng nhấn vào*/CarListFragment carListFragment) {
this.dataBindingComponent = dataBindingComponent;
this.carClickCallback = callback; //Tạo một đối tượng click callback
}
//Một số phương thức ghi đè cần có
@Override
protected ItemCarListAdapterBinding createBinding(ViewGroup parent) {
ItemCarListAdapterBinding binding = DataBindingUtil
.inflate(LayoutInflater.from(parent.getContext()),
R.layout.item_car_list_adapter/* car_car_list_adapter đã được tạo ở bước 5.2 */, parent, false,
dataBindingComponent);
binding.getRoot().setOnClickListener(v -> {
Car car = binding.getCar();
if (car != null && carClickCallback != null) {
carClickCallback.onClick(car);
}
});
return binding;
}
// For general animation
@Override
public void bindView(DataBoundViewHolder<ItemCarListAdapterBinding> holder, int position) {
super.bindView(holder, position);
}
@Override
protected void dispatched() {
if (diffUtilDispatchedInterface != null) {
diffUtilDispatchedInterface.onDispatched();
}
}
@Override
protected void bind(ItemCarListAdapterBinding binding, Car car) {
//Bây giờ chúng ta sẽ bắt đầu hiển thị dữ liệu cho một car. ví dụ trong trường ví dụ trong trường hợp này chúng ta chỉ cần hiển thị car_name. như vậy các bạn sẽ phải có thuộc tính car_name, thì bạn cần phải bổ sung cho view object ở bước 2 nhé
//Utils.psLog("car.car_name",car.car_name);
//set giá trị cho text
Utils.psLog("car.carName",car.carName);
//binding.carNameTextView.setText("sdfdsfds");
binding.setCar(car);
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(Car oldItem, Car newItem) {
return Objects.equals(oldItem.id, newItem.id)
&& oldItem.carName.equals(newItem.carName);
}
@Override
protected boolean areContentsTheSame(Car oldItem, Car newItem) {
return Objects.equals(oldItem.id, newItem.id)
&& oldItem.carName.equals(newItem.carName);
}
public interface CarClickCallback {
void onClick(Car car);
}
}
Chưa có câu hỏi nào cho bài này.