package com.uiuios.aios.adapter; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.RecyclerView; import com.uiuios.aios.R; import com.uiuios.aios.bean.DesktopIcon; import com.uiuios.aios.manager.AppManager; import com.uiuios.aios.utils.BitmapUtils; import com.uiuios.aios.utils.IconUtils; import java.util.List; import java.util.Set; public class AddAppAdapter extends RecyclerView.Adapter { private static final String TAG = AddAppAdapter.class.getSimpleName(); private Context mContext; private List desktopIcons; private Set packageSet; @NonNull @Override public AppHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { mContext = parent.getContext(); return new AppHolder(LayoutInflater.from(mContext).inflate(R.layout.item_add_app, parent, false)); } @Override public void onBindViewHolder(@NonNull AppHolder holder, int position) { DesktopIcon desktopIcon = desktopIcons.get(position); String lable = desktopIcon.getTitle(); holder.tv_appname.setText(lable); holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); String pkg = desktopIcon.getPackage(); if (packageSet != null) { if (packageSet.contains(pkg)) { holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected)); } else { holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected)); } } Log.e(TAG, "getView: " + pkg); int i = IconUtils.appClassNameList.indexOf(pkg); if (i != -1) { String val = IconUtils.appIconList.get(i); int resID = mContext.getResources().getIdentifier(val, "drawable", "com.uiui.zyos"); if (resID == 0) { Log.e(TAG, "getView: not found src : " + pkg); holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon())); } else { holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID)); } } else { if (AppManager.ADD_NAME.equals(pkg)) { holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); } else { holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon())); } } holder.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (packageSet.contains(pkg)) { packageSet.remove(pkg); AppManager.getInstance().removeAddPakcage(pkg); } else { packageSet.add(pkg); AppManager.getInstance().addAddPakcage(pkg); } notifyDataSetChanged(); } }); } @Override public int getItemCount() { return desktopIcons == null ? 0 : desktopIcons.size(); } public void setDesktopIcons(List desktopIcons) { this.desktopIcons = desktopIcons; notifyDataSetChanged(); } public void setPackageSet(Set packageSet) { this.packageSet = packageSet; } class AppHolder extends RecyclerView.ViewHolder { ConstraintLayout root; TextView tv_appname; ImageView iv_icon, iv_select; public AppHolder(@NonNull View itemView) { super(itemView); root = itemView.findViewById(R.id.root); tv_appname = itemView.findViewById(R.id.tv_appname); iv_icon = itemView.findViewById(R.id.iv_icon); iv_select = itemView.findViewById(R.id.iv_select); } } }