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

肯尼迪:

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

我正在尝试将所选标签的ID传递给回收者视图的适配器

1. TransactionsFragment(创建选项卡布局的位置)

 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();

2. TransactionsPagePageAdapter(适配器控制选项卡)

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

3. DynamicFragment(在每个选项卡中填充了回收站视图的位置)

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();

4. TransactionsAdapter(控制回收者视图的适配器)

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

我需要将walletID从1(TransactionsFragment)更改为4(TransactionsAdapter),这是可能的,如果可以的话,我知道事实是捆绑包无法做到这一点,因为我们没有创建意图

丛海:
  1. 确保将walletId到ArgumentsDynamicFragment
DynamicFragment.newInstance(walletID.get(position))
  1. 的修改构造TransactionsAdapter遵循这一
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;
    }


  1. DynamicFragment当你INIT TransactionsAdapter获得walletId来自片段的参数
Integer walletId = getArguments().getInt("your_key") // your key when you newInstance and put to Bundle
TransactionsAdapter adapter = new TransactionsAdapter(getActivity(),childFragmentManager, userTransactionList);

最后,您的适配器具有以下信息: walletId

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

如何将变量从适配器传递到片段?

如何将侦听器从片段传递到适配器?(科特琳)

如何将毕加索传递到ListView适配器

如何将变量从活动传递到适配器

如何将ArrayList从适配器传递到活动?

如何将数据从适配器类传递到底部对话框对话框片段

获取空指针异常-使用接口将数据从适配器传递到子片段

如何将片段上下文传递给适配器?

如何从Recyclerview适配器的片段之间传递数据

Kotlin:如何将数据从RecyclerView适配器发送到片段

如何将数据从对话框片段返回到活动适配器?

如何将数据从适配器类发送到片段?

如何将数据从回收站适配器发送到片段 如何从Recyclerview适配器调用片段函数

将数据从 Recyclerview 适配器传递到 Fragment

Kotiln:将数据从适配器传递到活动

如何将参数从客户端传递到http适配器

如何将接口传递给适配器?

如何将数据从适配器发送到ViewModel到Fragment

我如何将变量从适配器传递给我在Kotlin中实例化的片段

如何将json数组对象从一个JavaScript适配器传递到另一个JavaScript适配器?

数据传递问题适配器到android中的片段(返回默认值<null>)

将值从回收站适配器传递到android中的片段

如何将字符串值传递给适配器类(基本适配器)android JAVA

将数据传递给适配器时,片段中的 Gridview 出现错误

我们如何将当前用户登录的 uid 从适配器传递到其他活动

如何将参数从适配器类传递到另一个类中的方法

如何将适配器连接到我的片段?

Android:如何通过单击 RecyclerView 外部的按钮将所有数据从 RecyclerView 适配器传递到 NewActivity?