猿问

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

我需要为每个 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 加上点击。

我如何更改它以单独为两者工作?


红颜莎娜
浏览 117回答 1
1回答

大话西游666

重要的是您可以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);                }            }
随时随地看视频慕课网APP

相关分类

Java
我要回答