class ViewHolder { public LinearLayout child_layout; public ImageView profile_Image; public TextView tv_name; public TextView tv_mobileNO; public TextView tv_officeNO; public ImageView child_btn; }
private class ListViewAdapter extends BaseAdapter { ImageLoader imageLoader; Context context;
public ListViewAdapter(Context context) { this.context = context; imageLoader = new ImageLoader(context); }
@Override public int getCount() { return arrayList.size(); // 데이터 개수 리턴 }
@Override public Object getItem(int position) { return arrayList.get(position); }
// 지정한 위치(position)에 있는 데이터 리턴 @Override public long getItemId(int position) { return position; }
// position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴 @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; final Context context = parent.getContext();
// 화면에 표시될 View if(convertView == null){ viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.address_item,parent,false);
convertView.setBackgroundColor(0x00FFFFFF); convertView.invalidate();
// 화면에 표시될 View 로부터 위젯에 대한 참조 획득 viewHolder.profile_Image = (ImageView) convertView.findViewById(R.id.profile_Image); viewHolder.tv_name = (TextView) convertView.findViewById(R.id.child_name); viewHolder.tv_mobileNO = (TextView) convertView.findViewById(R.id.child_mobileNO); viewHolder.tv_officeNO = (TextView) convertView.findViewById(R.id.child_officeNO); viewHolder.child_btn = (ImageView) convertView.findViewById(R.id.child_Btn);
convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); }
// PersonData 에서 position 에 위치한 데이터 참조 획득 final Address_Item addressItem = arrayList.get(position);
// 아이템 내 각 위젯에 데이터 반영 // 선택된 row의 데이터를 표시한다. 표시될 view는 address_itemm.xml 의 각 항목 이용 표시한다. System.out.println("imageurl==" + addressItem.getProfile_image()); if(addressItem.getProfile_image().equals("")){ final Bitmap Base_Profile = PHPComm.autoresize_decodeResource(getResources(), R.mipmap.photo_base, 160); viewHolder.profile_Image.setImageBitmap(Base_Profile); } else { final String photoURL = Value.IPADDRESS + "/photos/" + addressItem.getProfile_image(); imageLoader.DisplayImage(photoURL, viewHolder.profile_Image); }
viewHolder.tv_name.setText(addressItem.getName()); viewHolder.tv_mobileNO.setText(PhoneNumberUtils.formatNumber(addressItem.getMobileNO())); viewHolder.tv_officeNO.setText(PhoneNumberUtils.formatNumber(addressItem.getOfficeNO()));
final String[] items ={"휴대폰 전화걸기","사무실전화 걸기", "연락처 저장"}; final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("해당작업을 선택하세요"); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(context, items[which] + "선택했습니다.", Toast.LENGTH_SHORT).show(); switch (which){ case 0: if(addressItem.getMobileNO().length() ==0){ Toast.makeText(context, "전화걸 휴대폰 번호가 없습니다.",Toast.LENGTH_SHORT).show(); break; } AlertDialog dialog1 = new AlertDialog.Builder(context) .setTitle(addressItem.getName()) .setMessage(PhoneNumberUtils.formatNumber(addressItem.getMobileNO()) + " 통화하시겠습니까?") .setPositiveButton("예", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + PhoneNumberUtils.formatNumber(addressItem.getMobileNO()))); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling return; } startActivity(intent); } }) .setNegativeButton( "아니오", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); } }).create(); dialog1.show(); break; case 1: if(addressItem.getOfficeNO().length() ==0){ Toast.makeText(context, "전화걸 사무실 번호가 없습니다.",Toast.LENGTH_SHORT).show(); break; } AlertDialog dialog2 = new AlertDialog.Builder(context) .setTitle(addressItem.getName()) .setMessage(PhoneNumberUtils.formatNumber(addressItem.getOfficeNO()) + " 통화하시겠습니까?") .setPositiveButton("예", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + PhoneNumberUtils.formatNumber(addressItem.getOfficeNO()))); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling return; } startActivity(intent); } }) .setNegativeButton( "아니오", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); } }).create(); dialog2.show(); break; case 2: // 연락처 저장 함수 호출 AlertDialog.Builder SaveContact = new AlertDialog.Builder(context); SaveContact.setMessage("전화번호를 저장하시겠습니까?"); DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) { int rawContactId = 0; Contacts phonebook = new Contacts(); // 전화번호부 객체 생성 ContentResolver cr = getContentResolver(); String strContactName = addressItem.getName(); String strMobileNO = addressItem.getMobileNO(); String strofficeNO =addressItem.getOfficeNO(); String strEmail =""; String strPhoto ="";
rawContactId = phonebook.ContactsIDExistCheck(cr, strContactName); if(rawContactId > 0){ // 기존 전화번호가 존재하면 삭제하고 새로 입력 System.out.println("ContactID is exist !! Need delete!!"); phonebook.ContactsIDdelete(cr, context, rawContactId); } phonebook.ContactsIDinsert(cr, context, strContactName, strMobileNO, strofficeNO, strEmail, strPhoto); } };
DialogInterface.OnClickListener cancel = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) {
} }; SaveContact.setPositiveButton("저장", listener); SaveContact.setNegativeButton("취소", cancel); SaveContact.show(); break; } } }); builder.create();
viewHolder.child_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 버튼이 눌렸을 때 다음 액션 처리를 여기에 코드를 적어서 처리한다. Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vibe.vibrate(50);
builder.show(); } });
convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getApplicationContext(), "상세보기를 눌렀습니다 ==="+ addressItem.getUid(), Toast.LENGTH_SHORT).show(); } });
return convertView; }
// 아이템 데이터 추가를 위한 메소드 public void addItem(String profile_image, String uid, String name, String mobileNO, String officeNO){ Address_Item item = new Address_Item(); item.setProfile_image(profile_image); item.setUid(uid); item.setName(name); item.setMobileNO(mobileNO); item.setOfficeNO(officeNO);
arrayList.add(item); } }
|