【问题标题】:Calling a fragment and getting the id in the RecyclerView adapter在 RecyclerView 适配器中调用片段并获取 id
【发布时间】:2021-11-09 23:44:57
【问题描述】:

我有一个使用 RecyclerView 的列表,我想要的是当我单击列表项时,它会打开一个片段,我一直在搜索,我只找到了一个活动,但我只使用片段,如果我使用活动,它会随着我的操作栏消失,这一切都在片段中设置。

这是我的适配器类:

    public class CreditCardAdapter extends RecyclerView.Adapter<CreditCardHolder> {

    private final List<CreditCard> creditList;

    public CreditCardAdapter(List<CreditCard> creditList) {
        this.creditList = creditList;
    }

    @NonNull
    @Override
    public CreditCardHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.credit_card_item, parent, false);
        return new CreditCardHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull CreditCardHolder holder, int position) {
        CreditCard credit = creditList.get(position);
        String flag = credit.getFlag();
        holder.flag.setText(flag);
        String owner = credit.getOwner();
        holder.owner.setText(owner);
        String valueLimit = String.format("%.2f", credit.getLimit());
        holder.limit.setText(valueLimit.replace(".", ","));
        holder.creditCardId = credit.getId();

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               //Method on click
            }
        });
    }


    @Override
    public int getItemCount() {
        return creditList.size();
    }
}

我需要将信用卡 ID 发送到 Fragment,以调用控制器并从数据库中获取信息,我尝试了它的意图,但它只有在我使用 startActivity(intent) 调用活动时才有效。

所以这里是片段类:

public class InfoCreditCardFragment extends Fragment {

    public InfoCreditCardFragment() {
        // Required empty public constructor
    }


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_info_credit_card, container, false);


        String id; //Here I need the id from the Adapter

        TextView flagInfoTxt = view.findViewById(R.id.flagInfoTxt);
        TextView ownerInfoTxt = view.findViewById(R.id.ownerInfoTxt);

        CreditCard cc = CreditCardController.getWithId(id);
        flagInfoTxt.setText(cc.getFlag());
        ownerInfoTxt.setText(cc.getOwner());


        return view;
    }
}

如果有人知道可以提供帮助,请,我很绝望。

【问题讨论】:

标签: java android android-studio android-fragments android-recyclerview


【解决方案1】:

所以,我设法使用这个去片段:

Bundle bundle = new Bundle();
bundle.putString("id", holder.creditCardId);

InfoCreditCardFragment fragment = new InfoCreditCardFragment();
AppCompatActivity activity = (AppCompatActivity) view.getContext();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, fragment).addToBackStack(null).commit();

在片段中,我只得到带有“getArguments().getString("id");”的包

【讨论】:

  • 没关系,我是敲键盘后才知道的哈哈哈哈,知道如何使用 Bundle。
  • 您能否在您的回答中添加有关您的捆绑问题以及诊断和解决该问题的步骤的更多信息?
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
相关资源
最近更新 更多