157 lines
6.4 KiB
Java
157 lines
6.4 KiB
Java
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<ContactAdapter.ContactHolder> {
|
|
private List<Contact> 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<Contact> 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);
|
|
}
|
|
}
|
|
}
|