1

I here by attached my code.

  1. I have a fragment with in that have recycler list item list.

  2. If i click the recycler item on fragment i can't move to new activity.

  3. And i want to get the recycler item value which item i have clicked.

So kindly please suggest me to how to intent fragment to activity once clicked recycler list item with in fragment and how to get the recycler item value?

ContactOneFragment

public class ContactOneFragment extends Fragment {

    protected RecyclerView.LayoutManager mLayoutManager;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view= inflater.inflate(R.layout.fragment_contactone, null, false);
        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
        DetailModel detail[] = {
                new DetailModel("Meenakshi.A","9566415797"),
                new DetailModel("Pandimurugeswari.S","8940144873"),
                new DetailModel("Selvam. K","7708410451"),
                new DetailModel("Raja Lakshmi.V","9952754812"),
                new DetailModel("Narmatha Devi.S","9894762259"),
                new DetailModel("Murugan.M","9566368816"),
                new DetailModel("SenthilMurugan.A","7667453595"),
        };

        mLayoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(mLayoutManager);
        DetailAdapter mAdapter = new DetailAdapter(detail);
        recyclerView.setAdapter(mAdapter);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        return view;
     }
}

DetailAdapter

public class DetailAdapter extends RecyclerView.Adapter<DetailAdapter.ViewHolder> {
    private DetailModel[] itemsData;
    private final ArrayList<Integer> selected = new ArrayList<>();
    OnItemClickListener mItemClickListener;
    Context context;

    public DetailAdapter(DetailModel[] itemsData) {
        this.itemsData = itemsData;
    }

    // Create new views (invoked by the layout manager)
    @Override
    public DetailAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // create a new view
        View itemLayoutView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.contactnamenumber, null);

        // create ViewHolder

        ViewHolder viewHolder = new ViewHolder(itemLayoutView);
        return viewHolder;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {

        // - get data from your itemsData at this position
        // - replace the contents of the view with that itemsData

        viewHolder.namelist.setText(itemsData[position].getName());
        viewHolder.numberlist.setText(itemsData[position].getNumber());
        //  viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl());
        // viewHolder.imgViewIcon.setTag(new Integer(position));
    }


    // inner class to hold a reference to each item of RecyclerView
    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public TextView namelist;
        public TextView numberlist;
        String name;
        String number;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);
            namelist = (TextView) itemLayoutView.findViewById(R.id.name);
            numberlist = (TextView) itemLayoutView.findViewById(R.id.contactnumber);
            //imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
            name=namelist.getText().toString();
            number=numberlist.getText().toString();
            itemLayoutView.setOnClickListener(this);

        }

        @Override public void onClick(View view) {
        }
    }

    public interface OnItemClickListener {
        public void onItemClick(View view , int position);
    }

    public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) {
        this.mItemClickListener = mItemClickListener;
    }

    // Return the size of your itemsData (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return itemsData.length;
    }
} //Update - Code formatting
V-rund Puro-hit
  • 5,518
  • 9
  • 31
  • 50
karthik
  • 321
  • 1
  • 8
  • 21

2 Answers2

1

Modify your constructor DetailAdapter as following:

public DetailAdapter(Context context, DetailModel[] itemsData) {
  this.context = context;
  this.itemsData = itemsData;
}

On your onClick() method in adapter add following code:

@Override 
public void onClick(View view) {
    int pos = getAdapterPosition();
    String tempName = itemsData[pos].getName();
    String tempNumber = itemsData[pos].getNumber();
    Intent intent = new Intent(context, YourActivity.class);
    startActivity(intent);
}     
V-rund Puro-hit
  • 5,518
  • 9
  • 31
  • 50
Kanchan Chowdhury
  • 433
  • 1
  • 5
  • 15
0

Add this on your adapter,

View.OnClickListener mOnClickListener = new OrderClickListener();

then

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.contactnamenumber, parent, false);
    view.setOnClickListener(mOnClickListener);
    return new ViewHolder(view);
}

now in adapter,

 private class OrderClickListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        mOrderSelect.onOrderSelect(rvOrderHistory.getChildLayoutPosition(v));
    }
}

From above steps you can get the position which item is clicked. Here you can go to next activity.

Akshay Shinde
  • 945
  • 10
  • 23