Я хочу отобразить макет ниже на RecyclerView
. Этот макет дублируется в зависимости от количества магазинов. Допустим, у нас есть 2 магазина, поэтому пользователь увидит два макета этого с разными названиями магазинов.
item_checkout_delivery_slots layout">
Класс адаптера:
public class DeliverySlotsAdapter extends RecyclerView.Adapter<DeliverySlotsAdapter.ViewHolder> {
private Context context;
LayoutInflater layoutInflater;
List<Object> objects;
private LayoutInflater inflater;
private CallbackListener.SimpleCallback listener;
public DeliverySlotsAdapter(Context context, List<Object> objects) {
this.context = context;
this.objects = objects;
this.inflater = LayoutInflater.from(context);
}
public void setListener(CallbackListener.SimpleCallback listener) {
this.listener = listener;
}
@Override
public ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
RecyclerView.ViewHolder viewHolder;
View view= inflater.inflate(R.layout.item_checkout_delivery_slots, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.bind(objects.get(position));
}
@Override
public int getItemCount() {
return objects.size() != 0 ? objects.size() : 0;
}
class ViewHolder extends RecyclerView.ViewHolder {
// @BindView(R.id.rlSchedule)
// RelativeLayout rlSchedule;
@BindView(R.id.tvDeliveryScheduleLabel)
TextView tvDeliveryScheduleLabel;
// @BindView(R.id.tvDeliverySchedule)
// TextView tvDeliverySchedule;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(v -> {
if (listener!=null && getAdapterPosition() != RecyclerView.NO_POSITION) {
listener.onItemClick(objects.get(getAdapterPosition()));
}
});
}
public void bind(Object object){
DeliverySlotItem deliverySlotItem = (DeliverySlotItem) object;
// DeliverySlotItem item = new DeliverySlotItem();
// Log.e("", "adfdfsf" + object);
// tvDeliveryScheduleLabel.setText(item.shop_name);
tvDeliveryScheduleLabel.setText(deliverySlotItem.shop_name + " Delivery");
}
}
}
tvDeliveryScheduleLabel
получает название магазина, но со следующим кодом возвращает ноль:
tvDeliveryScheduleLabel.setText(deliverySlotItem.shop_name + "Delivery");
Вот так я получаю значения.
Entity area = new Gson().fromJson(Preferences.getString(Prefkey.selected_area), Entity.class);
this.controller.getItems(area.id, new CallbackListener.MultiEntityListener() {
@Override
public void onSuccess(List<Object> data, List<Object> included) {
List<Entity> include = AppUtil.cast(included);
List<Entity> shops = AppUtil.getEntitiesByType("shops", include);
for (Entity shop : shops) {
DeliverySlotItem deliverySlotItem = new DeliverySlotItem();
deliverySlotItem.shop_name = shop.attributes.name;
Preferences.setString(Prefkey.selected_shop, shop.toString());
objects.add(deliverySlotItem);
deliverySlotItems.add(deliverySlotItem);
}
}
@Override
public void onFailed(Object object) {
}
});
deliverySlotsAdapter = new DeliverySlotsAdapter(CheckoutActivity.this, objects);
rv_deliveryslots.setLayoutManager(new LinearLayoutManager(CheckoutActivity.this));
rv_deliveryslots.setAdapter(deliverySlotsAdapter);