为了账号安全,请及时绑定邮箱和手机立即绑定

Java:如何为每个 RecyclerView 项目制作自己的总数计数器?

Java:如何为每个 RecyclerView 项目制作自己的总数计数器?

红颜莎娜 2023-05-10 13:44:01
我需要为每个 RecyclerView 项目单独制作一个总数计数器。这是清除这种情况的图片和代码:TTL 是我需要的总计数器。当我单击播放器 1 加号时,该特定项目的总计数器应增加 1,减号应减少 1。我现在有什么:ViewHolder(处理减号和加号):public static class GameViewHolder extends RecyclerView.ViewHolder {    public TextView mTextPlayer, mTextPar, mTotalTxt, mNumberTotal;    public ImageView mImageMinus, mImagePlus;    public GameViewHolder(@NonNull View itemView, final GameAdapter.OnItemClickListener listener) {        super(itemView);        mTextPlayer = itemView.findViewById(R.id.gameNameRecycler);        mTextPar = itemView.findViewById(R.id.gameParNumberRecycler);        mImageMinus = itemView.findViewById(R.id.game_minus_btn);        mImagePlus = itemView.findViewById(R.id.game_plus_btn);        mTotalTxt = itemView.findViewById(R.id.game_total_txt);        mNumberTotal = itemView.findViewById(R.id.game_total_number);        mImageMinus.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (listener != null) {                    int position = getAdapterPosition();                    if (position != RecyclerView.NO_POSITION) {                        listener.onMinusClick(position);                    }                }            }        });        mImagePlus.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (listener != null) {                    int position = getAdapterPosition();                    if (position != RecyclerView.NO_POSITION) {                        listener.onPlusClick(position);                    }                }            }        });    }所以这就是我现在所拥有的,但是 atm 每个项目都使用相同的 itemCounter,所以如果我点击播放器 1 加号按钮,它的 TTL 是 1(它应该)但是在那之后当我点击播放器 2 加号按钮时,播放器 2 TTL 应该也是 1 但实际上是 2,因为 1 额外来自那个玩家 1 加上点击。我如何更改它以单独为两者工作?
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

重要的是您可以notifyItemChanged(position)在已更改的行的位置调用 ,它只会更新回收站视图中的该项目。


您可以从已分配的查看器中获取值,而不是将您的计数保存在 totalCounter 中,例如String totalCounter = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.view)).getText().toString();


@Override

     public void onMinusClick(int position) {

            String parNum = mGameItemList.get(position).getText2();

            int intParNm = Integer.valueOf(parNum);


            if (intParNm != 1) {

                intParNm -= 1;

                totalCounter -= 1;

               mGameItemList.get(position).changeText2(Integer.toString(intParNm));

               mGameItemList.get(position).changeText4(Integer.toString(totalCounter));

               adapter.notifyItemChanged(position);

                }


            }


查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信