package com.lzx.lock.adapter;
import android.content.Context;
import android.content.pm.ApplicationInfo;
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 com.lzx.lock.R;
import com.lzx.lock.bean.CommLockInfo;
import com.lzx.lock.db.CommLockInfoManager;
import java.util.ArrayList;
import java.util.List;
/**
* Created by xian on 2017/3/1.
*/
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MainViewHolder> {
private List<CommLockInfo> mLockInfos = new ArrayList<>();
private Context mContext;
private PackageManager packageManager;
private CommLockInfoManager mLockInfoManager;
public MainAdapter(Context mContext) {
this.mContext = mContext;
packageManager = mContext.getPackageManager();
mLockInfoManager = new CommLockInfoManager(mContext);
}
public void setLockInfos(List<CommLockInfo> lockInfos) {
mLockInfos.clear();
mLockInfos.addAll(lockInfos);
notifyDataSetChanged();
}
@Override
public MainViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main_list, parent, false);
return new MainViewHolder(view);
}
@Override
public void onBindViewHolder(final MainViewHolder holder, final int position) {
final CommLockInfo lockInfo = mLockInfos.get(position);
initData(holder.mAppName, holder.mSwitchCompat, holder.mAppIcon, lockInfo);
holder.mSwitchCompat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
changeItemLockStatus(holder.mSwitchCompat, lockInfo, position);
}
});
}
/**
* 初始化数据
*/
private void initData(TextView tvAppName, CheckBox switchCompat, ImageView mAppIcon, CommLockInfo lockInfo) {
tvAppName.setText(packageManager.getApplicationLabel(lockInfo.getAppInfo()));
switchCompat.setChecked(lockInfo.isLocked());
ApplicationInfo appInfo = lockInfo.getAppInfo();
mAppIcon.setImageDrawable(packageManager.getApplicationIcon(appInfo));
}
public void changeItemLockStatus(CheckBox checkBox, CommLockInfo info, int position) {
if (checkBox.isChecked()) {
info.setLocked(true);
mLockInfoManager.lockCommApplication(info.getPackageName());
} else {
info.setLocked(false);
mLockInfoManager.unlockCommApplication(info.getPackageName());
}
notifyItemChanged(position);
}
@Override
public int getItemCount() {
return mLockInfos.size();
}
public class MainViewHolder extends RecyclerView.ViewHolder {
private ImageView mAppIcon;
private TextView mAppName;
private CheckBox mSwitchCompat;
public MainViewHolder(View itemView) {
super(itemView);
mAppIcon = (ImageView) itemView.findViewById(R.id.app_icon);
mAppName = (TextView) itemView.findViewById(R.id.app_name);
mSwitchCompat = (CheckBox) itemView.findViewById(R.id.switch_compat);
}
}
}