-2

I have recyckeview in an fragments which contains contact list , I want to set onclick listener to recycleview which uses the recycleview phone number and send it to dialller screen using ACTION_DIAL.

myfragment:

public class HomeFragment extends Fragment {
        ArrayList<ExampleItem> exampleList = new ArrayList<>();
    Context context;
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_home,container,false);
            context=getContext();
            RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycleview_home);
            RecycleViewadapter recycleViewadapter =new RecycleViewadapter(getActivity(),exampleList);
            recyclerView.setHasFixedSize(true);
            recyclerView.setAdapter(recycleViewadapter);
            setuprecycleview();

            recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

            return view;
        }
        private void setuprecycleview() {
       exampleList.add(new ExampleItem("sagar","student","************","*******.com"));
          exampleList.add(new ExampleItem("sagar","student","************","*******.com"));
exampleList.add(new ExampleItem("sagar","student","************","*******.com"));    
        }

    }

myrecyclevieeadapter:

public class RecycleViewadapter extends RecyclerView.Adapter<RecycleViewadapter.ViewHolder>  {
        private ArrayList<ExampleItem> mexampleList = new ArrayList<>();
    Context mcontext;
        RecyclerView recyclerView;
        public RecycleViewadapter(Context mcontext, ArrayList<ExampleItem> mexampleList) {
            this.mcontext = mcontext;

            this.mexampleList = mexampleList;

        }
        @NonNull
        @Override
        public ViewHolder onCreateViewHolder( ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_cardview,viewGroup,false);
            ViewHolder viewHolder=new ViewHolder(view);
            return viewHolder;
        }
        public RecycleViewadapter(ArrayList<ExampleItem> exampleList){
            mexampleList= exampleList;
        }
        @Override
        public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
            final ExampleItem currentItem = mexampleList.get(i);
    int lastPosition=-1;
    viewHolder.name.setText(currentItem.getName());
            viewHolder.phone.setText(currentItem.getPhone());
            viewHolder.email.setText(currentItem.getEmail());
            viewHolder.profession.setText(currentItem.getProfession());
           viewHolder.phone.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   String phoneno =viewHolder.phone.getText().toString();
                   Intent intent = new Intent(Intent.ACTION_DIAL);
                   intent.setData(Uri.parse(phoneno));
                  // mcontext.startActivity(intent);

               }
           });
           if (i>lastPosition){
               Animation animation= AnimationUtils.loadAnimation(mcontext,R.anim.contacts_anim);
               viewHolder.itemView.startAnimation(animation);
               lastPosition=i;
           }
        }
        @Override
        public void onViewDetachedFromWindow(@NonNull ViewHolder holder) {
            super.onViewDetachedFromWindow(holder);
            holder.itemView.clearAnimation();
        }
        @Override
        public int getItemCount() {
            return mexampleList.size();
        }
        public class ViewHolder extends RecyclerView.ViewHolder{
            TextView name;
            CircleImageView image;
            TextView phone;
            TextView profession;
            TextView email;

            ImageView whatsapp;
    CardView cardView;
            public ViewHolder(View itemView) {
                super(itemView);
                whatsapp =itemView.findViewById(R.id.image_phone);
                profession=itemView.findViewById(R.id.profession);
                email =itemView.findViewById(R.id.email);
                image = itemView.findViewById(R.id.image);
                name = itemView.findViewById(R.id.name);
                phone=itemView.findViewById(R.id.phone_no);
                recyclerView= itemView.findViewById(R.id.recycleview_home);
                cardView=itemView.findViewById(R.id.cardview);
    cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String phoneno =phone.getText().toString();
            Intent intent = new Intent(Intent.ACTION_DIAL);
            intent.setData(Uri.parse(phoneno));
            //mcontext.startActivity(intent);
        }
    });
     }}}

I tried using intent to ACTION_DIAL but the app crashes when I click on the recycleview card view. how can I use ACTION_DIAL from fragment recycleview. THanks in advance.

1 Answers1

0

Change to this:

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phoneno));
mcontext.startActivity(intent);

in your manifest you must include:

<uses-permission android:name="android.permission.CALL_PHONE" />
  • If you can , one more https://stackoverflow.com/questions/51686808/how-to-store-the-posts-created-by-firebaseui-in-the-app – sagar shetty Aug 04 '18 at 15:02