Java 如何将数据从片段传递到适配器

Java 如何将数据从片段传递到适配器,java,android,android-fragments,Java,Android,Android Fragments,让我快速解释一下我的代码结构,我有一个带有动态片段的动态选项卡布局。这些选项卡是从json响应获取的,每个选项卡都有一个动态片段,其中包含一个由json响应填充的回收器视图 我正在尝试将所选选项卡的id传递给回收器视图的适配器 1。TransactionFragment(创建选项卡布局的位置) for(int i=0;i 确保将walletId放入DynamicFragment的Arguments 修改TransactionAdapter的构造函数 最后,您的适配器具有基于您已将walletId

让我快速解释一下我的代码结构,我有一个带有动态片段的动态选项卡布局。这些选项卡是从json响应获取的,每个选项卡都有一个动态片段,其中包含一个由json响应填充的回收器视图

我正在尝试将所选选项卡的id传递给回收器视图的适配器

1。TransactionFragment(创建选项卡布局的位置)

for(int i=0;i
  • 确保将walletId放入
    DynamicFragment
    Arguments
  • 修改
    TransactionAdapter的构造函数

  • 最后,您的适配器具有基于您已将walletId从1传递到3的代码的walletId信息。从这里开始,您只能通过构造函数将其传递到“TransactionAdapter”。那么问题出在哪里?我当前将其从1传递到2,我需要从1传递到4这是放置walletId的正确方法吗bundle的参数
    bundle args=new bundle();args.putInt(“您的_键”,walletID.get(position));返回DynamicFragment.newInstance(walletID.get(position));
    哈哈,请更新方法newInstance,我可以帮您纠正codeCongrats,您做到了:D
     for(int i=0;i<array.length();i++) {
    
                                    //getting wallet object from json array
                                    JSONObject userWallets=array.getJSONObject(i);
    
                                    tab.addTab(tab.newTab().setText(userWallets.getString("wallet_name")));
                                    walletID.add(userWallets.getInt("id"));
                                }
    
                                TransactionsPagerAdapter adapter = new TransactionsPagerAdapter
                                        (getChildFragmentManager(), tab.getTabCount(), walletID); //the data i need to pass is the walletID
                                viewPager.setAdapter(adapter);
                                viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab));
                                adapter.notifyDataSetChanged();
    
    public class TransactionsPagerAdapter extends FragmentStatePagerAdapter {
        int mNumOfTabs;
        ArrayList<Integer> walletID;
    
        public TransactionsPagerAdapter(FragmentManager fm, int NumOfTabs, ArrayList<Integer> walletID) {
            super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
            this.mNumOfTabs = NumOfTabs;
            this.walletID = walletID;
        }
    
        @Override
         public Fragment getItem(int position) {
        DynamicFragment d = new DynamicFragment();
        Bundle args = new Bundle();
        args.putInt("your_key", walletID.get(position));
        d.setArguments(args);
        return d.newInstance(walletID.get(position));
    
    }
    
        @Override
        public int getCount() {
            return mNumOfTabs;
        }
        }
    
    for(int i=0;i<array.length();i++) {
    
                                    //getting wallet object from json array
                                    JSONObject userTransactions=array.getJSONObject(i);
    
                                    //adding the wallet to wallet list
                                    userTransactionList.add(new Transaction(
                                            userTransactions.getInt("id"),
                                            userTransactions.getInt("wallet_id"),
                                            userTransactions.getDouble("fee"),
                                            userTransactions.getDouble("amount"),
                                            userTransactions.getDouble("from"),
                                            userTransactions.getDouble("to"),
                                            userTransactions.getString("destination_address"),
                                            userTransactions.getString("type"),
                                            userTransactions.getString("created_at")
                                    ));
                                }
    
                                //creating adapter object and setting it to recyclerview
                                TransactionsAdapter adapter = new TransactionsAdapter(getActivity(),childFragmentManager, userTransactionList);
                                mRecyclerView.setAdapter(adapter);
                                swipeRefreshLayout.setRefreshing(false);
                                // stop animating Shimmer and hide the layout
                                mShimmerViewContainer.stopShimmerAnimation();
                                mShimmerViewContainer.setVisibility(View.GONE);
    //                            progressDialog.dismiss();
                                adapter.notifyDataSetChanged();
    
    public class TransactionsAdapter extends RecyclerView.Adapter<TransactionsAdapter.DataObjectHolder> {
    
        private static String TAG = TransactionsAdapter.class.getSimpleName();
    
        private Context mCtx;
        private FragmentManager fragmentManager;
    
        private ArrayList<Transaction> userTransactionList;
        private static MyClickListener myClickListener;
    
        public TransactionsAdapter(Context mCtx, FragmentManager fragmentManager, ArrayList<Transaction> userTransactionList) {
            this.mCtx = mCtx;
            this.fragmentManager = fragmentManager;
            this.userTransactionList = userTransactionList;
        }
    
        public static class DataObjectHolder extends RecyclerView.ViewHolder {
            TextView transactionamount, transactionstatus, transactionid;
            ImageView transactionicon, pendingicon;
    
            public DataObjectHolder(View itemView) {
                super(itemView);
                transactionamount = (TextView) itemView.findViewById(R.id.amount);
                transactionstatus = (TextView) itemView.findViewById(R.id.status);
                transactionicon = (ImageView) itemView.findViewById(R.id.tx_icon);
                pendingicon = (ImageView) itemView.findViewById(R.id.img_status);
                transactionid = (TextView) itemView.findViewById(R.id.wallet_id);
            }
    
        }
    
            @Override
            public TransactionsAdapter.DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(mCtx).inflate(R.layout.transaction_item, parent, false);
                final TransactionsAdapter.DataObjectHolder dataObjectHolder = new TransactionsAdapter.DataObjectHolder(view);
                return dataObjectHolder;
            }
    
    
            @Override
            public void onBindViewHolder(TransactionsAdapter.DataObjectHolder holder, final int position) {
    
                DecimalFormat formatter = new DecimalFormat("###,###,###,###,###.##");
                formatter.setDecimalSeparatorAlwaysShown(true);
                formatter.setMinimumFractionDigits(2);
                Double doubleBalance = userTransactionList.get(position).getTransactionAmount();
                String numberFormatBalance = formatter.format(doubleBalance);
                holder.transactionstatus.setText(userTransactionList.get(position).getTransactionType());
                holder.transactionamount.setText(String.valueOf("₦ " + numberFormatBalance));
                if ((userTransactionList.get(position).getTransactionType()).equals("send")) {
                    holder.transactionicon.setImageResource(R.drawable.ic_communication_call_made);
                } else  {
                    holder.transactionicon.setImageResource(R.drawable.ic_communication_call_received);
                }
    
            }
    
    
            @Override
            public int getItemCount() {
                return userTransactionList.size();
            }
    
            public interface MyClickListener {
                public void onItemClick(int position, View v);
            }
        }
    
    DynamicFragment.newInstance(walletID.get(position))
    
    private Integer walletId;
    
    public TransactionsAdapter(Context mCtx, FragmentManager fragmentManager, ArrayList<Transaction> userTransactionList, Integer walletId) {
            this.mCtx = mCtx;
            this.fragmentManager = fragmentManager;
            this.userTransactionList = userTransactionList;
            this.walletId = walletId;
        }
    
    
    
    Integer walletId = getArguments().getInt("your_key") // your key when you newInstance and put to Bundle
    TransactionsAdapter adapter = new TransactionsAdapter(getActivity(),childFragmentManager, userTransactionList);