package com.pitchedapps.butler.sample.request;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Priority;
import com.pitchedapps.butler.iconrequest.App;
import com.pitchedapps.butler.iconrequest.IconRequest;
import com.pitchedapps.butler.sample.R;
import java.util.ArrayList;
public class RequestsAdapter extends RecyclerView.Adapter<RequestsAdapter.RequestsHolder> {
@Nullable
public ArrayList<App> getApps() {
if (IconRequest.get() != null)
return IconRequest.get().getApps();
return null;
}
@Override
public RequestsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_app_to_request, parent, false);
return new RequestsHolder(view);
}
@Override
public int getItemCount() {
return getApps() != null ? getApps().size() : 0;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public void onBindViewHolder(RequestsHolder holder, int position) {
//noinspection ConstantConditions
final App app = getApps().get(holder.getAdapterPosition());
app.loadIcon(holder.imgIcon, Priority.NORMAL);
final IconRequest ir = IconRequest.get();
holder.setupItem(ir, app);
}
public void unselectAllApps() {
IconRequest r = IconRequest.get();
if (r != null) {
r.unselectAllApps();
notifyDataSetChanged();
}
}
public class RequestsHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private ImageView imgIcon;
private TextView txtName;
private AppCompatCheckBox checkBox;
public RequestsHolder(View v) {
super(v);
imgIcon = (ImageView) v.findViewById(R.id.imgIcon);
txtName = (TextView) v.findViewById(R.id.txtName);
checkBox = (AppCompatCheckBox) v.findViewById(R.id.chkSelected);
v.setOnClickListener(this);
}
public void setupItem(IconRequest ir, App app) {
txtName.setText(app.getName());
checkBox.setChecked(ir.isAppSelected(app));
}
@Override
public void onClick(View view) {
final IconRequest ir = IconRequest.get();
if (ir != null && ir.getApps() != null) {
final App app = ir.getApps().get(getAdapterPosition());
ir.toggleAppSelected(app);
checkBox.setChecked(ir.isAppSelected(app));
}
}
}
}