Android 如何在单击回收器列表项后将片段添加到活动中,以及如何获取回收器项值?

Android 如何在单击回收器列表项后将片段添加到活动中,以及如何获取回收器项值?,android,fragment,adapter,android-recyclerview,Android,Fragment,Adapter,Android Recyclerview,我在此附上我的代码 我有一个片段,其中包含回收者列表项列表 如果我单击片段上的回收项目,我将无法移动到新活动 我想得到我点击的回收物品的价值 因此,请建议我如何在点击回收者列表项目后将其分段到活动中,以及如何获取回收者项目值 ContactOneFragment public class ContactOneFragment extends Fragment { protected RecyclerView.LayoutManager mLayoutManager; @Over

我在此附上我的代码

  • 我有一个片段,其中包含回收者列表项列表

  • 如果我单击片段上的回收项目,我将无法移动到新活动

  • 我想得到我点击的回收物品的价值

  • 因此,请建议我如何在点击回收者列表项目后将其分段到活动中,以及如何获取回收者项目值

    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
    
    公共类DetailAdapter扩展了RecyclerView.Adapter{ 私有DetailModel[]项数据; 选定的专用最终ArrayList=新ArrayList(); OnItemClickListener mItemClickListener; 语境; 公共DetailAdapter(DetailModel[]itemsData){ this.itemsData=itemsData; } //创建新视图(由布局管理器调用) @凌驾 public DetailAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){ //创建新视图 View itemLayoutView=LayoutFlater.from(parent.getContext()) .充气(R.layout.contactnamenumber,空); //创建视图持有者 ViewHolder ViewHolder=新的ViewHolder(itemLayoutView); 返回视图持有者; } //替换视图的内容(由布局管理器调用) @凌驾 公共无效onBindViewHolder(ViewHolder ViewHolder,int位置){ //-从该位置的itemsData获取数据 //-将视图的内容替换为该项数据 viewHolder.namelist.setText(itemsData[position].getName()); viewHolder.numberlist.setText(itemsData[position].getNumber()); //viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl()); //viewHolder.imgViewIcon.setTag(新整数(位置)); } //用于保存对RecyclerView的每个项的引用的内部类 公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{ 公共文本视图名称列表; 公共文本视图编号列表; 字符串名; 字符串编号; 公共视图持有者(视图项布局视图){ 超级(itemLayoutView); namelist=(TextView)itemLayoutView.findViewById(R.id.name); numberlist=(TextView)itemLayoutView.findViewById(R.id.contactnumber); //imgViewIcon=(ImageView)itemLayoutView.findViewById(R.id.item_图标); name=namelist.getText().toString(); number=numberlist.getText().toString(); itemLayoutView.setOnClickListener(此); } @覆盖公共void onClick(视图){ } } 公共接口侦听器{ 公共虚线单击(视图,int位置); } 公共void SetOnItemClickListener(最终OnItemClickListener mItemClickListener){ this.mItemClickListener=mItemClickListener; } //返回itemsData的大小(由布局管理器调用) @凌驾 public int getItemCount(){ 返回itemsData.length; } }//更新-代码格式
    修改构造函数
    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();
    
    然后

    现在在适配器中

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

    通过以上步骤,您可以获得单击项目的位置。在这里您可以进入下一个活动。

    您检查过了吗?不客气。如果你已经解决了,就接受答案@卡提克
     private class OrderClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            mOrderSelect.onOrderSelect(rvOrderHistory.getChildLayoutPosition(v));
        }
    }