当前位置: 首页 > 知识库问答 >
问题:

调用片段并在RecyclerView适配器中获取id

贾俊喆
2023-03-14

我有一个使用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发送到片段,调用控制器并从数据库中获取信息,我尝试了使用intent,但只有在使用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;
    }
}

如果有人知道什么可以帮忙的,拜托,我已经绝望了。

共有1个答案

潘银龙
2023-03-14

因此,我使用以下方法找到了片段:

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”);"

 类似资料:
  • 在适配器中 Holder.NameExam2.SetOnClickListener(新建View.OnClickListener(){ 成碎片 @覆盖公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ 它在getString()中调用空指针异常。如何解决。

  • AdapterClass: 提前感谢你的帮助。

  • 错误:(117,63)错误:不兼容的类型:TabThree碎片无法转换为上下文 错误显示在"new GridViewAdapter(这个,图像,名称);" 公共类TabThreeFragment扩展了片段{ //返回inflater.inflate(R.layout.tab_three_fragment,容器,false);} //RequestQueue RequestQueue=截击。newR

  • 但问题是我想知道如何从类中的片段调用方法?这是我的代码 下面是在活动中工作但在片段中不工作的代码

  • 在旧代码中,当我使用与自定义适配器时,我可以使用此代码获取项目。 现在我正在实现。如何从<代码>回收视图中获取项目。适配器?

  • 我正在使用一个片段来查看一个RecyclerView。但我总是犯这个错误 E/RecyclerView:未附加适配器;跳过布局 我已经为我的recyclerview创建了一个适配器,但布局没有显示。php后端运行良好。谁能帮帮我。下面是我的片段和适配器代码 Tips.java TipAdapter.java