package com.huhx0015.gw2at.view.adapters;
import android.databinding.DataBindingUtil;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.huhx0015.gw2at.R;
import com.huhx0015.gw2at.databinding.AdapterServerStatusBinding;
import com.huhx0015.gw2at.model.responses.WorldsResponse;
import com.huhx0015.gw2at.viewmodels.adapters.ServerStatusAdapterViewModel;
import java.util.List;
/**
* Created by Michael Yoon Huh on 2/1/2017.
*/
public class ServerStatusAdapter extends RecyclerView.Adapter<ServerStatusAdapter.ServerStatusViewHolder> {
/** CLASS VARIABLES ________________________________________________________________________ **/
// LIST VARIABLES
private List<WorldsResponse> mWorldList;
// LOGGING VARIABLES
private static final String LOG_TAG = ServerStatusAdapter.class.getSimpleName();
/** CONSTRUCTOR METHODS ____________________________________________________________________ **/
public ServerStatusAdapter(List<WorldsResponse> list) {
this.mWorldList = list;
}
/** RECYCLER VIEW METHODS __________________________________________________________________ **/
@Override
public ServerStatusViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
AdapterServerStatusBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.adapter_server_status, parent, false);
return new ServerStatusViewHolder(binding);
}
@Override
public void onBindViewHolder(ServerStatusViewHolder holder, int position) {
String worldId = Integer.toString(mWorldList.get(position).getId());
String worldName = mWorldList.get(position).getName();
String worldPopulation = mWorldList.get(position).getPopulation();
holder.bindView(worldName, worldId, worldPopulation);
}
@Override
public void onViewRecycled(ServerStatusViewHolder holder) {
holder.mBinding.getViewModel().removeOnPropertyChangedCallback(null);
holder.mBinding.setViewModel(null);
holder.mBinding.executePendingBindings();
super.onViewRecycled(holder);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemCount() {
if (mWorldList != null) {
return mWorldList.size();
} else {
return 0;
}
}
/** SUBCLASSES _____________________________________________________________________________ **/
class ServerStatusViewHolder extends RecyclerView.ViewHolder {
private AdapterServerStatusBinding mBinding;
ServerStatusViewHolder(AdapterServerStatusBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
private void bindView(String worldName, String id, String serverStatus) {
ServerStatusAdapterViewModel viewModel = new ServerStatusAdapterViewModel(worldName, id, serverStatus);
mBinding.setViewModel(viewModel);
}
}
}