package com.xxpatx.os.adapter; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; 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.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; import com.xxpatx.os.BuildConfig; import com.xxpatx.os.R; import com.xxpatx.os.activity.settings.dock.DockActivity; import com.xxpatx.os.bean.DockApp; import com.xxpatx.os.config.CommonConfig; import com.xxpatx.os.gson.GsonUtils; import com.xxpatx.os.utils.IconUtils; import java.util.ArrayList; import java.util.List; public class DockAppSelectedAdapter extends RecyclerView.Adapter { private static final String TAG = "AppSelectedAdapter"; private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private Context mContext; private List mDockAppList; private List mSelectedPkgList = new ArrayList<>(); public void setSelectedPkgList(List selectedPkgList) { this.mSelectedPkgList = selectedPkgList; Log.e(TAG, "setPkgList: " + mSelectedPkgList); notifyDataSetChanged(); } public void setDockAppList(List dockAppList) { this.mDockAppList = dockAppList; notifyDataSetChanged(); } @NonNull @Override public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { mContext = parent.getContext(); return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_dock_app_select, parent, false)); } @Override public void onBindViewHolder(@NonNull Holder holder, int position) { DockApp dockApp = mDockAppList.get(position); String pkg = dockApp.getPackageName(); switch (pkg) { case "xxpatx.os.dialer": holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.home_icon_dialer)); break; case "com.mediatek.camera": holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.com_android_camera)); break; case "com.android.mms": holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.com_android_mms_ui)); break; default: holder.iv_icon.setImageDrawable(getIcon(dockApp.getPackageName())); } holder.tv_name.setText(dockApp.getAppName()); if (mSelectedPkgList.contains(dockApp)) { holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected)); holder.root.setBackground(mContext.getDrawable(R.drawable.app_select_background)); } else { holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected)); holder.root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background)); } holder.iv_select.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { holder.selectApp(dockApp); } }); holder.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { holder.selectApp(dockApp); } }); } public Drawable getIcon(String packageName) { PackageManager pm = mContext.getPackageManager(); ApplicationInfo info = null; try { info = pm.getApplicationInfo(packageName, 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } if (info == null) { return null; } else { int i = IconUtils.appClassNameList.indexOf(packageName); if (i != -1) { String val = IconUtils.appIconList.get(i); int resID = mContext.getResources().getIdentifier(val, "drawable", BuildConfig.APPLICATION_ID); if (resID != 0) { return mContext.getResources().getDrawable(resID); } } return info.loadIcon(pm); } } @Override public int getItemCount() { return mDockAppList == null ? 0 : mDockAppList.size(); } class Holder extends RecyclerView.ViewHolder { ImageView iv_select, iv_icon; TextView tv_name; ConstraintLayout root; Holder(@NonNull View itemView) { super(itemView); root = itemView.findViewById(R.id.root); iv_select = itemView.findViewById(R.id.iv_select); iv_icon = itemView.findViewById(R.id.iv_icon); tv_name = itemView.findViewById(R.id.tv_name); } public void selectApp(DockApp dockApp) { Log.e(TAG, "selectApp: " + dockApp.getPackageName()); if (!mSelectedPkgList.contains(dockApp)) { if (mSelectedPkgList.size() >= 5) { Toaster.show("最多选择5个"); } else { mSelectedPkgList.add(dockApp); iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected)); root.setBackground(mContext.getDrawable(R.drawable.app_select_background)); } } else { mSelectedPkgList.remove(dockApp); iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected)); root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background)); } if (mSelectedPkgList.size() == 0) { mMMKV.encode(DockActivity.DOCK_APP_KEY, ""); } else { mMMKV.encode(DockActivity.DOCK_APP_KEY, GsonUtils.toJSONString(mSelectedPkgList)); } notifyDataSetChanged(); } } }