package tk.wasdennnoch.androidn_ify.ui.misc;
import android.content.pm.PackageManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import tk.wasdennnoch.androidn_ify.R;
@SuppressWarnings("WeakerAccess")
public class AppsAdapter extends RecyclerView.Adapter<AppsAdapter.AppViewHolder> {
List<CachedResolveInfo> mApps;
List<String> mEnabledApps;
final PackageManager mPackageManager;
final AppsAdapterListener mListener;
public AppsAdapter(List<CachedResolveInfo> apps, List<String> enabledApps, PackageManager pm, AppsAdapterListener listener) {
mApps = apps;
mEnabledApps = enabledApps;
mPackageManager = pm;
mListener = listener;
}
@Override
public AppViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.app_row, parent, false);
return new AppViewHolder(itemView);
}
@Override
public void onBindViewHolder(final AppViewHolder holder, int position) {
CachedResolveInfo app = mApps.get(position);
holder.mAppName.setText(app.getLabel());
holder.mPackageName.setText(app.getPackageName());
holder.mAppIcon.setImageDrawable(app.getIcon());
holder.mCheckBox.setChecked(mEnabledApps.contains(app.getPackageName()));
}
@Override
public int getItemCount() {
return mApps.size();
}
public void setApps(List<CachedResolveInfo> apps) {
mApps = apps;
}
public List<CachedResolveInfo> getApps() {
return mApps;
}
public void setEnabledApps(List<String> enabledApps) {
mEnabledApps = enabledApps;
}
public class AppViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public final TextView mAppName;
public final TextView mPackageName;
public final ImageView mAppIcon;
public final CheckBox mCheckBox;
public AppViewHolder(View itemView) {
super(itemView);
mAppName = (TextView) itemView.findViewById(R.id.appName);
mPackageName = (TextView) itemView.findViewById(R.id.packageName);
mAppIcon = (ImageView) itemView.findViewById(R.id.appIcon);
mCheckBox = (CheckBox) itemView.findViewById(R.id.check);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
mListener.onSelect(getAdapterPosition(), this);
}
}
public interface AppsAdapterListener {
void onSelect(int adapterPosition, AppViewHolder itemView);
}
}