单击片段中的回收站列表项后,如何将片段意图 activity 以及如何获取回收站项目值?

How to intent fragment to activity once clicked recycler list item with in fragment and how to get the recycler item value?

我在这里附上我的代码。

  1. 我有一个片段,其中有回收站列表项列表。

  2. 如果我单击片段上的回收器项目,我将无法移动到新的 activity。

  3. 我想获取我点击过的回收站物品值。

所以,请建议我如何将片段意图 activity 一旦点击了片段中的回收站列表项目,以及如何获取回收站项目值?

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;
     }
}

细节适配器

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

修改构造函数DetailAdapter如下:

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

在适配器中的 onClick() 方法中添加以下代码:

@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);
}     

将此添加到您的适配器上,

View.OnClickListener mOnClickListener = new OrderClickListener();

然后

@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);
}

现在在适配器中,

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

通过以上步骤,您可以获取点击项目的位置。在这里您可以转到下一个 activity.