Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 添加新联系人后如何更新RecyclerView(包含联系人列表)?_Android_Android Recyclerview_Contacts - Fatal编程技术网

Android 添加新联系人后如何更新RecyclerView(包含联系人列表)?

Android 添加新联系人后如何更新RecyclerView(包含联系人列表)?,android,android-recyclerview,contacts,Android,Android Recyclerview,Contacts,我的问题是: 我有4门课: public class MainActivity extends AppCompatActivity { public static final int REQUEST_CODE_SPEECH_INPUT=1000; private TabLayout tabLayout; private ViewPager viewPager; private ViewPagerAdapter adapter; private Toolba

我的问题是:

我有4门课:

public class MainActivity extends AppCompatActivity {
    public static final int REQUEST_CODE_SPEECH_INPUT=1000;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ViewPagerAdapter adapter;
    private Toolbar toolbar;

    private SearchView sv;
    private FloatingActionButton fab;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //initializing vars
        tabLayout = (TabLayout) findViewById(R.id.tablayout_id);
        viewPager = (ViewPager) findViewById(R.id.viewpager_id);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        sv = (SearchView) toolbar.findViewById(R.id.searchview);
        fab =(FloatingActionButton)findViewById(R.id.fab);
        ImageView img_voice_search = (ImageView) toolbar.findViewById(R.id.ic_voice);

        adapter = new ViewPagerAdapter(getSupportFragmentManager());

        //Set to toolbar
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false); //Remove Title of Toolbar

        //Add Fragment here
        adapter.addFragment(new CallFragment(),"GẦN ĐÂY");
        adapter.addFragment(new ContactFragment(), "DANH BẠ");
        viewPager.setAdapter(adapter);

        //Custom tablayout
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setTabTextColors(getResources().getColor(R.color.colorHintTextLight), getResources().getColor(R.color.colorTextLight));


        //Speech to Text
        img_voice_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Auto focus to searchview when click image voice
                sv.setIconified(false);
                sv.requestFocus();
                speak();
            }
        });

        //fab on click event
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,NewContactActivity.class);
                startActivityForResult(intent, 2);
            }
        });
    }


    public void speak(){
        Intent mIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        mIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL
                , RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        mIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
        mIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Hi speak something");
        try {
            startActivityForResult(mIntent, REQUEST_CODE_SPEECH_INPUT);
        } catch (Exception ex){
            Toast.makeText(this, "" + ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

    //receive and handle it
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case REQUEST_CODE_SPEECH_INPUT:{
                if(resultCode == RESULT_OK && null != data){
                    //get text array from voice intent
                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    //set to search view
                    sv.setQuery(result.get(0), true);
                }
                break;
            }
            case 2:{
                String message=data.getStringExtra("MESSAGE");
                Toast.makeText(getApplicationContext(), "Đã thêm danh bạ: " + message, Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_toolbar, menu);
        return true;
    }
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
    Context mContext;
    List<Contact> mData;
    Dialog mDialog;
    private TextView dialog_tvName, dialog_tvPhone, dialog_Fname;

    public RecyclerViewAdapter(Context mContext, List<Contact> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v;
        v = LayoutInflater.from(mContext).inflate(R.layout.item_contact, viewGroup, false);
        final MyViewHolder viewHolder = new MyViewHolder(v);
        //Initializing my dialog
        mDialog = new Dialog(mContext);
        mDialog.setContentView(R.layout.dialog_contact);
        mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        viewHolder.items_contact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog_tvName = (TextView)mDialog.findViewById(R.id.dialog_tvName);
                dialog_tvPhone = (TextView)mDialog.findViewById(R.id.dialog_tvPhone);
                dialog_Fname = (TextView)mDialog.findViewById(R.id.dialog_Fname);
//                ImageView dialog_contact_img = (ImageView) mDialog.findViewById(R.id.dialog_img);
                dialog_tvName.setText(mData.get(viewHolder.getAdapterPosition()).getName());
                dialog_tvPhone.setText(mData.get(viewHolder.getAdapterPosition()).getPhone());
                dialog_Fname.setText(mData.get(viewHolder.getAdapterPosition()).getFname());
//                dialog_contact_img.setImageResource(mData.get(viewHolder.getAdapterPosition()).getPhoto());
//                Toast.makeText(mContext, "Test Click " + String.valueOf(viewHolder.getAdapterPosition()), Toast.LENGTH_SHORT).show();
                mDialog.show();

                //Sự kiện click vào icon gọi để chuyển hướng cuộc gọi đến sđt đc chọn
                ImageView call_button = (ImageView)mDialog.findViewById(R.id.call_button);
                ImageView chat_button = (ImageView)mDialog.findViewById(R.id.chat_button);
                call_button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v) {
//                        Intent i1 = new Intent (mContext, MainActivity.class);
                        mContext.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mData.get(viewHolder.getAdapterPosition()).getPhone())));
                    }
                });
                //click vào icon sms để vào ô chat với sđt đó
                chat_button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v) {
                        mContext.startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+ mData.get(viewHolder.getAdapterPosition()).getPhone())));
                    }
                });
            }
        });
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int position) {
        myViewHolder.tvName.setText(mData.get(position).getName());
        myViewHolder.tvFname.setText(mData.get(position).getFname());
//        myViewHolder.img.setImageResource(mData.get(position).getPhoto());
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder{
        private LinearLayout items_contact;
        private TextView tvName;
        private TextView tvFname;
        private ImageView img;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            items_contact = (LinearLayout) itemView.findViewById(R.id.contact_items_id);
            tvName = (TextView)itemView.findViewById(R.id.tvName);
            tvFname = (TextView)itemView.findViewById(R.id.tvFname);
            img = (ImageView)itemView.findViewById(R.id.img_contact);
        }
    }
}
public class ContactFragment extends Fragment {

    View v;
    private RecyclerView recyclerView;
    private List<Contact> lstContact;
    public ContactFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.contact_fragment, container, false);
        recyclerView = (RecyclerView)v.findViewById(R.id.contact_recyclerview);
        RecyclerViewAdapter adapter = new RecyclerViewAdapter(getContext(), lstContact);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(adapter);
        return v;
    }
    public void loadContacList(){
        //Accessing to contact list and get info
        ContentResolver resolver = getActivity().getContentResolver();
        Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (cursor.moveToNext()){
            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

            List<String> lstPhoneNumber = new ArrayList<>();
            List<String> lstEmail = new ArrayList<>();

            //Phone
            Cursor phoneCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI
                    , null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?"
                    , new String[]{id}, null);

            while (phoneCursor.moveToNext() && phoneCursor != null){
                String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                lstPhoneNumber.add(phoneNumber);
            }
            phoneCursor.close();

            //Email
            Cursor emailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI
                    , null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?"
                    , new String[]{id}, null);
            while (emailCursor.moveToNext() && emailCursor != null){
                String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                lstEmail.add(email);
            }
            emailCursor.close();
            lstContact.add(new Contact(id, name, name.substring(0, 1).toUpperCase()
                    , lstPhoneNumber.size() == 0 ? "" : lstPhoneNumber.get(0)
                    , lstEmail.size()== 0 ? "" : lstEmail.get(0)));
        }
        cursor.close();
        Collections.sort(lstContact, new CustomComparaterLetterContact());
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lstContact = new ArrayList<>();
        loadContacList();
    }
    //Class to Compare lstContact for letters
    private class CustomComparaterLetterContact implements Comparator<Contact> {
        @Override
        public int compare(Contact o1, Contact o2) {
            return o1.getName().compareToIgnoreCase(o2.getName());
        }
    }
}
public class NewContactActivity extends AppCompatActivity {
    private EditText edtName;
    private EditText edtPhone;
    private EditText edtEmail;
    private ImageButton btnBack;
    private TextView edtAdd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contact);


        btnBack = (ImageButton) findViewById(R.id.btnBack);
        edtAdd = (TextView) findViewById(R.id.edtAdd);
        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
//        LinearLayout llExtraFields = findViewById(R.id.admin);
//        if (llExtraFields.getVisibility() == View.VISIBLE) {
//            llExtraFields.setVisibility(View.GONE);
//        } else {
//            llExtraFields.setVisibility(View.VISIBLE);
//        }
        edtAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edtName = (EditText) findViewById(R.id.edtName);
                edtPhone = (EditText) findViewById(R.id.edtPhone);
                edtEmail = (EditText)findViewById(R.id.edtEmail);

                String name = edtName.getText().toString();
                String phone = edtPhone.getText().toString();
                String email = edtEmail.getText().toString();

                ArrayList < ContentProviderOperation > ops = new ArrayList < ContentProviderOperation > ();

                ops.add(ContentProviderOperation.newInsert(
                        ContactsContract.RawContacts.CONTENT_URI)
                        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                        .build());
                if (name != null) {
                    ops.add(ContentProviderOperation.newInsert(
                            ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                            .withValue(
                                    ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
                                    name).build());
                }

                if (phone != null) {
                    ops.add(ContentProviderOperation.
                            newInsert(ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
                            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
                                    ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
                            .build());
                }

                if (email != null) {
                    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                            .withValue(ContactsContract.CommonDataKinds.Email.DATA, email)
                            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                            .build());
                }

                try {
                    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
                    Toast.makeText(getApplicationContext(), "Thêm thành công danh bạ: " + name, Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Thêm thành công danh bạ: " + name, Toast.LENGTH_SHORT).show();
                }

                Intent intent=new Intent();
                intent.putExtra("MESSAGE",name);
                setResult(2,intent);
                finish();
            }
        });
    }
}
  • MainActivity.java
  • RecycleServiceAdapter.java
  • ContactFragment.java
  • NewContactActivity.java
现在是我的故事:

  • MainActivity
    中,我单击
    AddButton
    进入
    NewContactActivity
  • NewContactActivity
    I中键入信息联系人,然后单击
    save按钮
    ,将信息保存到
    ContactList
    ,然后返回MainActivity
  • 在MainActivity中,现在RecyclerView使用我刚刚添加的新数据进行更新
我的文件: MainActivity.java:

public class MainActivity extends AppCompatActivity {
    public static final int REQUEST_CODE_SPEECH_INPUT=1000;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ViewPagerAdapter adapter;
    private Toolbar toolbar;

    private SearchView sv;
    private FloatingActionButton fab;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //initializing vars
        tabLayout = (TabLayout) findViewById(R.id.tablayout_id);
        viewPager = (ViewPager) findViewById(R.id.viewpager_id);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        sv = (SearchView) toolbar.findViewById(R.id.searchview);
        fab =(FloatingActionButton)findViewById(R.id.fab);
        ImageView img_voice_search = (ImageView) toolbar.findViewById(R.id.ic_voice);

        adapter = new ViewPagerAdapter(getSupportFragmentManager());

        //Set to toolbar
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false); //Remove Title of Toolbar

        //Add Fragment here
        adapter.addFragment(new CallFragment(),"GẦN ĐÂY");
        adapter.addFragment(new ContactFragment(), "DANH BẠ");
        viewPager.setAdapter(adapter);

        //Custom tablayout
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setTabTextColors(getResources().getColor(R.color.colorHintTextLight), getResources().getColor(R.color.colorTextLight));


        //Speech to Text
        img_voice_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Auto focus to searchview when click image voice
                sv.setIconified(false);
                sv.requestFocus();
                speak();
            }
        });

        //fab on click event
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,NewContactActivity.class);
                startActivityForResult(intent, 2);
            }
        });
    }


    public void speak(){
        Intent mIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        mIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL
                , RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        mIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
        mIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Hi speak something");
        try {
            startActivityForResult(mIntent, REQUEST_CODE_SPEECH_INPUT);
        } catch (Exception ex){
            Toast.makeText(this, "" + ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

    //receive and handle it
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case REQUEST_CODE_SPEECH_INPUT:{
                if(resultCode == RESULT_OK && null != data){
                    //get text array from voice intent
                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    //set to search view
                    sv.setQuery(result.get(0), true);
                }
                break;
            }
            case 2:{
                String message=data.getStringExtra("MESSAGE");
                Toast.makeText(getApplicationContext(), "Đã thêm danh bạ: " + message, Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_toolbar, menu);
        return true;
    }
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
    Context mContext;
    List<Contact> mData;
    Dialog mDialog;
    private TextView dialog_tvName, dialog_tvPhone, dialog_Fname;

    public RecyclerViewAdapter(Context mContext, List<Contact> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v;
        v = LayoutInflater.from(mContext).inflate(R.layout.item_contact, viewGroup, false);
        final MyViewHolder viewHolder = new MyViewHolder(v);
        //Initializing my dialog
        mDialog = new Dialog(mContext);
        mDialog.setContentView(R.layout.dialog_contact);
        mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        viewHolder.items_contact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog_tvName = (TextView)mDialog.findViewById(R.id.dialog_tvName);
                dialog_tvPhone = (TextView)mDialog.findViewById(R.id.dialog_tvPhone);
                dialog_Fname = (TextView)mDialog.findViewById(R.id.dialog_Fname);
//                ImageView dialog_contact_img = (ImageView) mDialog.findViewById(R.id.dialog_img);
                dialog_tvName.setText(mData.get(viewHolder.getAdapterPosition()).getName());
                dialog_tvPhone.setText(mData.get(viewHolder.getAdapterPosition()).getPhone());
                dialog_Fname.setText(mData.get(viewHolder.getAdapterPosition()).getFname());
//                dialog_contact_img.setImageResource(mData.get(viewHolder.getAdapterPosition()).getPhoto());
//                Toast.makeText(mContext, "Test Click " + String.valueOf(viewHolder.getAdapterPosition()), Toast.LENGTH_SHORT).show();
                mDialog.show();

                //Sự kiện click vào icon gọi để chuyển hướng cuộc gọi đến sđt đc chọn
                ImageView call_button = (ImageView)mDialog.findViewById(R.id.call_button);
                ImageView chat_button = (ImageView)mDialog.findViewById(R.id.chat_button);
                call_button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v) {
//                        Intent i1 = new Intent (mContext, MainActivity.class);
                        mContext.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mData.get(viewHolder.getAdapterPosition()).getPhone())));
                    }
                });
                //click vào icon sms để vào ô chat với sđt đó
                chat_button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v) {
                        mContext.startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+ mData.get(viewHolder.getAdapterPosition()).getPhone())));
                    }
                });
            }
        });
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int position) {
        myViewHolder.tvName.setText(mData.get(position).getName());
        myViewHolder.tvFname.setText(mData.get(position).getFname());
//        myViewHolder.img.setImageResource(mData.get(position).getPhoto());
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder{
        private LinearLayout items_contact;
        private TextView tvName;
        private TextView tvFname;
        private ImageView img;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            items_contact = (LinearLayout) itemView.findViewById(R.id.contact_items_id);
            tvName = (TextView)itemView.findViewById(R.id.tvName);
            tvFname = (TextView)itemView.findViewById(R.id.tvFname);
            img = (ImageView)itemView.findViewById(R.id.img_contact);
        }
    }
}
public class ContactFragment extends Fragment {

    View v;
    private RecyclerView recyclerView;
    private List<Contact> lstContact;
    public ContactFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.contact_fragment, container, false);
        recyclerView = (RecyclerView)v.findViewById(R.id.contact_recyclerview);
        RecyclerViewAdapter adapter = new RecyclerViewAdapter(getContext(), lstContact);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(adapter);
        return v;
    }
    public void loadContacList(){
        //Accessing to contact list and get info
        ContentResolver resolver = getActivity().getContentResolver();
        Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (cursor.moveToNext()){
            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

            List<String> lstPhoneNumber = new ArrayList<>();
            List<String> lstEmail = new ArrayList<>();

            //Phone
            Cursor phoneCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI
                    , null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?"
                    , new String[]{id}, null);

            while (phoneCursor.moveToNext() && phoneCursor != null){
                String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                lstPhoneNumber.add(phoneNumber);
            }
            phoneCursor.close();

            //Email
            Cursor emailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI
                    , null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?"
                    , new String[]{id}, null);
            while (emailCursor.moveToNext() && emailCursor != null){
                String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                lstEmail.add(email);
            }
            emailCursor.close();
            lstContact.add(new Contact(id, name, name.substring(0, 1).toUpperCase()
                    , lstPhoneNumber.size() == 0 ? "" : lstPhoneNumber.get(0)
                    , lstEmail.size()== 0 ? "" : lstEmail.get(0)));
        }
        cursor.close();
        Collections.sort(lstContact, new CustomComparaterLetterContact());
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lstContact = new ArrayList<>();
        loadContacList();
    }
    //Class to Compare lstContact for letters
    private class CustomComparaterLetterContact implements Comparator<Contact> {
        @Override
        public int compare(Contact o1, Contact o2) {
            return o1.getName().compareToIgnoreCase(o2.getName());
        }
    }
}
public class NewContactActivity extends AppCompatActivity {
    private EditText edtName;
    private EditText edtPhone;
    private EditText edtEmail;
    private ImageButton btnBack;
    private TextView edtAdd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contact);


        btnBack = (ImageButton) findViewById(R.id.btnBack);
        edtAdd = (TextView) findViewById(R.id.edtAdd);
        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
//        LinearLayout llExtraFields = findViewById(R.id.admin);
//        if (llExtraFields.getVisibility() == View.VISIBLE) {
//            llExtraFields.setVisibility(View.GONE);
//        } else {
//            llExtraFields.setVisibility(View.VISIBLE);
//        }
        edtAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edtName = (EditText) findViewById(R.id.edtName);
                edtPhone = (EditText) findViewById(R.id.edtPhone);
                edtEmail = (EditText)findViewById(R.id.edtEmail);

                String name = edtName.getText().toString();
                String phone = edtPhone.getText().toString();
                String email = edtEmail.getText().toString();

                ArrayList < ContentProviderOperation > ops = new ArrayList < ContentProviderOperation > ();

                ops.add(ContentProviderOperation.newInsert(
                        ContactsContract.RawContacts.CONTENT_URI)
                        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                        .build());
                if (name != null) {
                    ops.add(ContentProviderOperation.newInsert(
                            ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                            .withValue(
                                    ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
                                    name).build());
                }

                if (phone != null) {
                    ops.add(ContentProviderOperation.
                            newInsert(ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
                            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
                                    ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
                            .build());
                }

                if (email != null) {
                    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                            .withValue(ContactsContract.CommonDataKinds.Email.DATA, email)
                            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                            .build());
                }

                try {
                    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
                    Toast.makeText(getApplicationContext(), "Thêm thành công danh bạ: " + name, Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Thêm thành công danh bạ: " + name, Toast.LENGTH_SHORT).show();
                }

                Intent intent=new Intent();
                intent.putExtra("MESSAGE",name);
                setResult(2,intent);
                finish();
            }
        });
    }
}
public类MainActivity扩展了AppCompatActivity{
公共静态最终整数请求\代码\语音\输入=1000;
私人摊位摊位;
私人视页机视页机;
专用ViewPagerAdapter适配器;
专用工具栏;
私有搜索视图sv;
私人浮动按钮制造厂;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化变量
tabLayout=(tabLayout)findViewById(R.id.tabLayout\u id);
viewPager=(viewPager)findViewById(R.id.viewPager\u id);
toolbar=(toolbar)findviewbyd(R.id.toolbar);
sv=(SearchView)toolbar.findviewbyd(R.id.SearchView);
fab=(FloatingActionButton)findViewById(R.id.fab);
ImageView img_voice_search=(ImageView)toolbar.findViewById(R.id.ic_voice);
适配器=新的ViewPagerAdapter(getSupportFragmentManager());
//设置为工具栏
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayShowTitleEnabled(false);//删除工具栏的标题
//在这里添加片段
addFragment(新的CallFragment(),“GẦNĐY”);
addFragment(新的ContactFragment(),“DANH BẠ");
viewPager.setAdapter(适配器);
//自定义表格布局
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabTextColor(getResources().getColor(R.color.colorHintTextLight),getResources().getColor(R.color.colorTextLight));
//从语音到文本
img\u voice\u search.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//单击图像语音时自动聚焦到searchview
sv.setIconified(假);
sv.requestFocus();
说();
}
});
//点击事件
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(MainActivity.this,NewContactActivity.class);
startActivityForResult(意向书,2);
}
});
}
公开演讲{
Intent MINENT=新意图(识别器Intent.ACTION\u识别\u语音);
minent.putExtra(RecognizerIntent.EXTRA_语言_模型
语言(模型)(自由形式),;
minent.putExtra(RecognizerIntent.EXTRA_语言,Locale.getDefault());
minent.putExtra(RecognizerIntent.EXTRA_提示符,“您好,说点什么”);
试一试{
startActivityForResult(输入、请求代码、语音输入);
}捕获(例外情况除外){
Toast.makeText(this,“+ex.getMessage(),Toast.LENGTH_SHORT.show();
}
}
//接收并处理它
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
案例请求\代码\语音\输入:{
if(resultCode==RESULT\u OK&&null!=数据){
//从语音意图获取文本数组
ArrayList结果=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果);
//设置为搜索视图
sv.setQuery(result.get(0),true);
}
打破
}
案例2:{
字符串消息=data.getStringExtra(“消息”);
Toast.makeText(getApplicationContext(),“thêm danh bạ: “+留言,祝酒词。长度(短)。show();
}
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu\u工具栏,菜单);
返回true;
}
}
RecycleServiceAdapter.java:

public class MainActivity extends AppCompatActivity {
    public static final int REQUEST_CODE_SPEECH_INPUT=1000;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ViewPagerAdapter adapter;
    private Toolbar toolbar;

    private SearchView sv;
    private FloatingActionButton fab;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //initializing vars
        tabLayout = (TabLayout) findViewById(R.id.tablayout_id);
        viewPager = (ViewPager) findViewById(R.id.viewpager_id);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        sv = (SearchView) toolbar.findViewById(R.id.searchview);
        fab =(FloatingActionButton)findViewById(R.id.fab);
        ImageView img_voice_search = (ImageView) toolbar.findViewById(R.id.ic_voice);

        adapter = new ViewPagerAdapter(getSupportFragmentManager());

        //Set to toolbar
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false); //Remove Title of Toolbar

        //Add Fragment here
        adapter.addFragment(new CallFragment(),"GẦN ĐÂY");
        adapter.addFragment(new ContactFragment(), "DANH BẠ");
        viewPager.setAdapter(adapter);

        //Custom tablayout
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setTabTextColors(getResources().getColor(R.color.colorHintTextLight), getResources().getColor(R.color.colorTextLight));


        //Speech to Text
        img_voice_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Auto focus to searchview when click image voice
                sv.setIconified(false);
                sv.requestFocus();
                speak();
            }
        });

        //fab on click event
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,NewContactActivity.class);
                startActivityForResult(intent, 2);
            }
        });
    }


    public void speak(){
        Intent mIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        mIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL
                , RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        mIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
        mIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Hi speak something");
        try {
            startActivityForResult(mIntent, REQUEST_CODE_SPEECH_INPUT);
        } catch (Exception ex){
            Toast.makeText(this, "" + ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

    //receive and handle it
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case REQUEST_CODE_SPEECH_INPUT:{
                if(resultCode == RESULT_OK && null != data){
                    //get text array from voice intent
                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    //set to search view
                    sv.setQuery(result.get(0), true);
                }
                break;
            }
            case 2:{
                String message=data.getStringExtra("MESSAGE");
                Toast.makeText(getApplicationContext(), "Đã thêm danh bạ: " + message, Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_toolbar, menu);
        return true;
    }
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
    Context mContext;
    List<Contact> mData;
    Dialog mDialog;
    private TextView dialog_tvName, dialog_tvPhone, dialog_Fname;

    public RecyclerViewAdapter(Context mContext, List<Contact> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v;
        v = LayoutInflater.from(mContext).inflate(R.layout.item_contact, viewGroup, false);
        final MyViewHolder viewHolder = new MyViewHolder(v);
        //Initializing my dialog
        mDialog = new Dialog(mContext);
        mDialog.setContentView(R.layout.dialog_contact);
        mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        viewHolder.items_contact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog_tvName = (TextView)mDialog.findViewById(R.id.dialog_tvName);
                dialog_tvPhone = (TextView)mDialog.findViewById(R.id.dialog_tvPhone);
                dialog_Fname = (TextView)mDialog.findViewById(R.id.dialog_Fname);
//                ImageView dialog_contact_img = (ImageView) mDialog.findViewById(R.id.dialog_img);
                dialog_tvName.setText(mData.get(viewHolder.getAdapterPosition()).getName());
                dialog_tvPhone.setText(mData.get(viewHolder.getAdapterPosition()).getPhone());
                dialog_Fname.setText(mData.get(viewHolder.getAdapterPosition()).getFname());
//                dialog_contact_img.setImageResource(mData.get(viewHolder.getAdapterPosition()).getPhoto());
//                Toast.makeText(mContext, "Test Click " + String.valueOf(viewHolder.getAdapterPosition()), Toast.LENGTH_SHORT).show();
                mDialog.show();

                //Sự kiện click vào icon gọi để chuyển hướng cuộc gọi đến sđt đc chọn
                ImageView call_button = (ImageView)mDialog.findViewById(R.id.call_button);
                ImageView chat_button = (ImageView)mDialog.findViewById(R.id.chat_button);
                call_button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v) {
//                        Intent i1 = new Intent (mContext, MainActivity.class);
                        mContext.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mData.get(viewHolder.getAdapterPosition()).getPhone())));
                    }
                });
                //click vào icon sms để vào ô chat với sđt đó
                chat_button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v) {
                        mContext.startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+ mData.get(viewHolder.getAdapterPosition()).getPhone())));
                    }
                });
            }
        });
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int position) {
        myViewHolder.tvName.setText(mData.get(position).getName());
        myViewHolder.tvFname.setText(mData.get(position).getFname());
//        myViewHolder.img.setImageResource(mData.get(position).getPhoto());
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder{
        private LinearLayout items_contact;
        private TextView tvName;
        private TextView tvFname;
        private ImageView img;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            items_contact = (LinearLayout) itemView.findViewById(R.id.contact_items_id);
            tvName = (TextView)itemView.findViewById(R.id.tvName);
            tvFname = (TextView)itemView.findViewById(R.id.tvFname);
            img = (ImageView)itemView.findViewById(R.id.img_contact);
        }
    }
}
public class ContactFragment extends Fragment {

    View v;
    private RecyclerView recyclerView;
    private List<Contact> lstContact;
    public ContactFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.contact_fragment, container, false);
        recyclerView = (RecyclerView)v.findViewById(R.id.contact_recyclerview);
        RecyclerViewAdapter adapter = new RecyclerViewAdapter(getContext(), lstContact);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(adapter);
        return v;
    }
    public void loadContacList(){
        //Accessing to contact list and get info
        ContentResolver resolver = getActivity().getContentResolver();
        Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (cursor.moveToNext()){
            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

            List<String> lstPhoneNumber = new ArrayList<>();
            List<String> lstEmail = new ArrayList<>();

            //Phone
            Cursor phoneCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI
                    , null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?"
                    , new String[]{id}, null);

            while (phoneCursor.moveToNext() && phoneCursor != null){
                String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                lstPhoneNumber.add(phoneNumber);
            }
            phoneCursor.close();

            //Email
            Cursor emailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI
                    , null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?"
                    , new String[]{id}, null);
            while (emailCursor.moveToNext() && emailCursor != null){
                String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                lstEmail.add(email);
            }
            emailCursor.close();
            lstContact.add(new Contact(id, name, name.substring(0, 1).toUpperCase()
                    , lstPhoneNumber.size() == 0 ? "" : lstPhoneNumber.get(0)
                    , lstEmail.size()== 0 ? "" : lstEmail.get(0)));
        }
        cursor.close();
        Collections.sort(lstContact, new CustomComparaterLetterContact());
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lstContact = new ArrayList<>();
        loadContacList();
    }
    //Class to Compare lstContact for letters
    private class CustomComparaterLetterContact implements Comparator<Contact> {
        @Override
        public int compare(Contact o1, Contact o2) {
            return o1.getName().compareToIgnoreCase(o2.getName());
        }
    }
}
public class NewContactActivity extends AppCompatActivity {
    private EditText edtName;
    private EditText edtPhone;
    private EditText edtEmail;
    private ImageButton btnBack;
    private TextView edtAdd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contact);


        btnBack = (ImageButton) findViewById(R.id.btnBack);
        edtAdd = (TextView) findViewById(R.id.edtAdd);
        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
//        LinearLayout llExtraFields = findViewById(R.id.admin);
//        if (llExtraFields.getVisibility() == View.VISIBLE) {
//            llExtraFields.setVisibility(View.GONE);
//        } else {
//            llExtraFields.setVisibility(View.VISIBLE);
//        }
        edtAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edtName = (EditText) findViewById(R.id.edtName);
                edtPhone = (EditText) findViewById(R.id.edtPhone);
                edtEmail = (EditText)findViewById(R.id.edtEmail);

                String name = edtName.getText().toString();
                String phone = edtPhone.getText().toString();
                String email = edtEmail.getText().toString();

                ArrayList < ContentProviderOperation > ops = new ArrayList < ContentProviderOperation > ();

                ops.add(ContentProviderOperation.newInsert(
                        ContactsContract.RawContacts.CONTENT_URI)
                        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                        .build());
                if (name != null) {
                    ops.add(ContentProviderOperation.newInsert(
                            ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                            .withValue(
                                    ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
                                    name).build());
                }

                if (phone != null) {
                    ops.add(ContentProviderOperation.
                            newInsert(ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
                            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
                                    ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
                            .build());
                }

                if (email != null) {
                    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                            .withValue(ContactsContract.Data.MIMETYPE,
                                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                            .withValue(ContactsContract.CommonDataKinds.Email.DATA, email)
                            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                            .build());
                }

                try {
                    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
                    Toast.makeText(getApplicationContext(), "Thêm thành công danh bạ: " + name, Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Thêm thành công danh bạ: " + name, Toast.LENGTH_SHORT).show();
                }

                Intent intent=new Intent();
                intent.putExtra("MESSAGE",name);
                setResult(2,intent);
                finish();
            }
        });
    }
}
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
语境;
列出mData;
对话mDialog;
私有文本视图对话框\u tvName、对话框\u tvPhone、对话框\u Fname;
公共RecycleServiceAdapter(上下文mContext,列表mData){
this.mContext=mContext;
this.mData=mData;
}
@非空
@凌驾
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
观点五;
v=布局更平坦。从(mContext)。充气(R.layout.item_触点,视图组,假);
最终MyViewHolder viewHolder=新MyViewHolder(v);
//初始化我的对话框
mDialog=新建对话框(mContext);
mDialog.setContentView(R.layout.dialog\u联系人);
mDialog.getWindow().setBackgroundDrawable(新的ColorDrawable(Color.TRANSPARENT));
viewHolder.items\u contact.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
dialog\u tvName=(TextView)mDialog.findviewbyd(R.id.dialog\u tvName);
dialog\u tvPhone=(TextView)mDialog.findViewById(R.id.dialog\u tvPhone);
dialog\u Fname=(TextView)mDialog.findviewbyd(R.id.dialog\u Fname);
//ImageView对话框\u联系人\u img=(ImageView)mDialog.findViewById(R.id.dialog\u img);
对话_