package com.xxpatx.os.adapter; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.text.TextUtils; 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.bumptech.glide.Glide; import com.hjq.toast.Toaster; import com.shehuan.niv.NiceImageView; import com.xxpatx.os.R; import com.xxpatx.os.activity.contact.AddWechatContactActivity; import com.xxpatx.os.activity.records.RecordsActivity; import com.xxpatx.os.bean.Contact; import java.util.List; public class ContactAdapter extends RecyclerView.Adapter { private List mContactList; private Context mContext; public static final String DIALER_PACKAGE = "com.android.dialer"; public static final String DIALER_ADD_CONTACT = "com.uiui.aios.contact.add"; public void setContactList(List contactList) { this.mContactList = contactList; notifyDataSetChanged(); } private WechatContactAdapter.OnLongClick mOnLongClick; public void setOnLongClick(WechatContactAdapter.OnLongClick onLongClick) { mOnLongClick = onLongClick; } public interface OnLongClick { void setOnLongClickListener(Contact contact); } @NonNull @Override public ContactHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { mContext = parent.getContext(); return new ContactHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false)); } @Override public void onBindViewHolder(@NonNull ContactHolder contactHolder, int position) { Contact contact = mContactList.get(position); if (contact.isSimContact()) { contactHolder.iv_sim.setVisibility(View.VISIBLE); } else { contactHolder.iv_sim.setVisibility(View.GONE); } contactHolder.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // int qch_call_forbid = Settings.System.getInt(mContext.getContentResolver(), "qch_call_forbid", 0); // if (qch_call_forbid == 1) { // Toaster.show("电话功能被禁用"); // return; // } Intent dialIntent = new Intent(Intent.ACTION_CALL); String phone = contact.getMobile(); if (DIALER_PACKAGE.equals(phone)) { try { // mContext.startActivity(new Intent(Intent.ACTION_DIAL)); // mContext.startActivity(new Intent(mContext, DialerActivity.class)); mContext.startActivity(new Intent(mContext, RecordsActivity.class)); } catch (Exception e) { Toaster.show("无法打开电话功能"); } } else if (DIALER_ADD_CONTACT.equals(contact.getMobile())) { Intent intent = new Intent(mContext, AddWechatContactActivity.class); mContext.startActivity(intent); } else if (!TextUtils.isEmpty(phone)) { Uri data = Uri.parse("tel:" + phone); dialIntent.setData(data); mContext.startActivity(dialIntent); } } }); contactHolder.root.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (mOnLongClick != null) { mOnLongClick.setOnLongClickListener(contact); } return false; } }); contactHolder.tv_name.setText(contact.getName()); if (DIALER_PACKAGE.equals(contact.getMobile())) { contactHolder.cl_contact.setVisibility(View.GONE); contactHolder.iv_head2.setVisibility(View.VISIBLE); contactHolder.tv_phone.setText(""); Glide.with(contactHolder.iv_head).load(R.drawable.home_dialer_icon_circle).error(R.drawable.home_dialer_icon_circle).into(contactHolder.iv_head); } else if (DIALER_ADD_CONTACT.equals(contact.getMobile())) { Glide.with(contactHolder.iv_head).load(R.drawable.icon_contact_add).error(R.drawable.icon_contact_add).into(contactHolder.iv_head); } else { contactHolder.cl_contact.setVisibility(View.VISIBLE); contactHolder.iv_head2.setVisibility(View.GONE); contactHolder.tv_phone.setText(contact.getMobile()); Glide.with(contactHolder.iv_head).load(contact.getAvatar()).error(R.drawable.default_avatar).into(contactHolder.iv_head); } // int index = position % 3; // switch (index) { // case 0: // contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_rain)); // break; // case 1: // contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_sun)); // break; // case 2: // contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_sunny)); // break; // default: // contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_rain)); // } } @Override public int getItemCount() { return mContactList == null ? 0 : mContactList.size(); } static class ContactHolder extends RecyclerView.ViewHolder { ConstraintLayout root; ConstraintLayout cl_contact; NiceImageView iv_head; NiceImageView iv_head2; TextView tv_name; TextView tv_phone; ImageView iv_sim; public ContactHolder(@NonNull View itemView) { super(itemView); root = itemView.findViewById(R.id.root); cl_contact = itemView.findViewById(R.id.cl_contact); iv_head = itemView.findViewById(R.id.iv_head); iv_head2 = itemView.findViewById(R.id.iv_head2); tv_name = itemView.findViewById(R.id.tv_name); tv_phone = itemView.findViewById(R.id.tv_phone); iv_sim = itemView.findViewById(R.id.iv_sim); } } }