|  |  |  | @@ -5,19 +5,25 @@ package cc.winboll.studio.contacts.adapters; | 
		
	
		
			
				|  |  |  |  |  * @Date 2025/02/26 13:35:44 | 
		
	
		
			
				|  |  |  |  |  * @Describe ContactAdapter | 
		
	
		
			
				|  |  |  |  |  */ | 
		
	
		
			
				|  |  |  |  | import android.content.ClipData; | 
		
	
		
			
				|  |  |  |  | import android.content.ClipboardManager; | 
		
	
		
			
				|  |  |  |  | import android.content.Context; | 
		
	
		
			
				|  |  |  |  | import android.content.Intent; | 
		
	
		
			
				|  |  |  |  | import android.view.LayoutInflater; | 
		
	
		
			
				|  |  |  |  | import android.view.MenuItem; | 
		
	
		
			
				|  |  |  |  | import android.view.View; | 
		
	
		
			
				|  |  |  |  | import android.view.ViewGroup; | 
		
	
		
			
				|  |  |  |  | import android.widget.Button; | 
		
	
		
			
				|  |  |  |  | import android.widget.LinearLayout; | 
		
	
		
			
				|  |  |  |  | import android.widget.PopupMenu; | 
		
	
		
			
				|  |  |  |  | import android.widget.TextView; | 
		
	
		
			
				|  |  |  |  | import android.widget.Toast; | 
		
	
		
			
				|  |  |  |  | import androidx.annotation.NonNull; | 
		
	
		
			
				|  |  |  |  | import androidx.recyclerview.widget.RecyclerView; | 
		
	
		
			
				|  |  |  |  | import cc.winboll.studio.contacts.R; | 
		
	
		
			
				|  |  |  |  | import cc.winboll.studio.contacts.beans.ContactModel; | 
		
	
		
			
				|  |  |  |  | import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; | 
		
	
		
			
				|  |  |  |  | import com.hjq.toast.ToastUtils; | 
		
	
		
			
				|  |  |  |  | import java.util.List; | 
		
	
		
			
				|  |  |  |  | import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> { | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -26,8 +32,10 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV | 
		
	
		
			
				|  |  |  |  |     private static final int REQUEST_CALL_PHONE = 1; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     private List<ContactModel> contactList; | 
		
	
		
			
				|  |  |  |  | 	Context mContext; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     public ContactAdapter(List<ContactModel> contactList) { | 
		
	
		
			
				|  |  |  |  |     public ContactAdapter(Context context, List<ContactModel> contactList) { | 
		
	
		
			
				|  |  |  |  | 		mContext = context; | 
		
	
		
			
				|  |  |  |  |         this.contactList = contactList; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -41,6 +49,37 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV | 
		
	
		
			
				|  |  |  |  |     @Override | 
		
	
		
			
				|  |  |  |  |     public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) { | 
		
	
		
			
				|  |  |  |  |         final ContactModel contact = contactList.get(position); | 
		
	
		
			
				|  |  |  |  | 		holder.llPhoneNumberMain.setOnLongClickListener(new View.OnLongClickListener() { | 
		
	
		
			
				|  |  |  |  | 				@Override | 
		
	
		
			
				|  |  |  |  | 				public boolean onLongClick(View p1) { | 
		
	
		
			
				|  |  |  |  | 					// 弹出复制菜单 | 
		
	
		
			
				|  |  |  |  | 					PopupMenu menu = new PopupMenu(mContext, holder.llPhoneNumberMain); | 
		
	
		
			
				|  |  |  |  | 					//加载菜单资源 | 
		
	
		
			
				|  |  |  |  | 					menu.getMenuInflater().inflate(R.menu.toolbar_contact_phonenumber, menu.getMenu()); | 
		
	
		
			
				|  |  |  |  | 					//设置点击事件的响应 | 
		
	
		
			
				|  |  |  |  | 					menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { | 
		
	
		
			
				|  |  |  |  | 							@Override | 
		
	
		
			
				|  |  |  |  | 							public boolean onMenuItemClick(MenuItem menuItem) { | 
		
	
		
			
				|  |  |  |  | 								int nItemId = menuItem.getItemId(); | 
		
	
		
			
				|  |  |  |  | 								if (nItemId == R.id.item_contact_phonenumber_copy) { | 
		
	
		
			
				|  |  |  |  | 									// Gets a handle to the clipboard service. | 
		
	
		
			
				|  |  |  |  | 									ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE); | 
		
	
		
			
				|  |  |  |  | 									// Creates a new text clip to put on the clipboard | 
		
	
		
			
				|  |  |  |  | 									ClipData clip = ClipData.newPlainText("simple text", contact.getNumber()); | 
		
	
		
			
				|  |  |  |  | 									// Set the clipboard's primary clip. | 
		
	
		
			
				|  |  |  |  | 									clipboard.setPrimaryClip(clip); | 
		
	
		
			
				|  |  |  |  | 									Toast.makeText(mContext, "Copy to clipboard.", Toast.LENGTH_SHORT).show(); | 
		
	
		
			
				|  |  |  |  | 								} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 								return true; | 
		
	
		
			
				|  |  |  |  | 							} | 
		
	
		
			
				|  |  |  |  | 						}); | 
		
	
		
			
				|  |  |  |  | 					//一定要调用show()来显示弹出式菜单 | 
		
	
		
			
				|  |  |  |  | 					menu.show(); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 					return true; | 
		
	
		
			
				|  |  |  |  | 				} | 
		
	
		
			
				|  |  |  |  | 			}); | 
		
	
		
			
				|  |  |  |  |         holder.contactName.setText(contact.getName()); | 
		
	
		
			
				|  |  |  |  |         holder.contactNumber.setText(contact.getNumber()); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -69,12 +108,14 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     public class ContactViewHolder extends RecyclerView.ViewHolder { | 
		
	
		
			
				|  |  |  |  | 		LinearLayout llPhoneNumberMain; | 
		
	
		
			
				|  |  |  |  |         TextView contactName; | 
		
	
		
			
				|  |  |  |  |         TextView contactNumber; | 
		
	
		
			
				|  |  |  |  |         AOHPCTCSeekBar dialAOHPCTCSeekBar; | 
		
	
		
			
				|  |  |  |  |          | 
		
	
		
			
				|  |  |  |  |         public ContactViewHolder(@NonNull View itemView) { | 
		
	
		
			
				|  |  |  |  |             super(itemView); | 
		
	
		
			
				|  |  |  |  | 			llPhoneNumberMain = itemView.findViewById(R.id.itemcontactLinearLayout1); | 
		
	
		
			
				|  |  |  |  |             contactName = itemView.findViewById(R.id.contact_name); | 
		
	
		
			
				|  |  |  |  |             contactNumber = itemView.findViewById(R.id.contact_number); | 
		
	
		
			
				|  |  |  |  |             dialAOHPCTCSeekBar = itemView.findViewById(R.id.aohpctcseekbar_dial); | 
		
	
	
		
			
				
					
					|  |  |  |   |