Javaの:すべてのRecyclerView項目のための独自の合計数カウンタを作成する方法は?

antsakontsa:

私は個別にすべての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);
                    }
                }
            }
        });
    }
}

活動に:

mAdapter.setOnItemClickListener(new GameAdapter.OnItemClickListener() {
            int totalCounter = 0;

            @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));
                    mAdapter.notifyDataSetChanged();
                }

            }

            @Override
            public void onPlusClick(int position) {
                String parNum = mGameItemList.get(position).getText2();
                int intParNm = Integer.valueOf(parNum);

                if (intParNm != 99) {
                    intParNm += 1;
                    totalCounter += 1;

                    mGameItemList.get(position).changeText2(Integer.toString(intParNm));
                    mGameItemList.get(position).changeText4(Integer.toString(totalCounter));
                    mAdapter.notifyDataSetChanged();
                }
            }
        });

私はプレーヤー1のプラスボタンをクリックすると、同じitemCounterは、そう、そのTTLが1(それが必要として)であるが、その後、私は、プレーヤー2 TTL SHOULDをプレイヤー2のプラスボタンをクリックしたときにすることを私が今持っているものですが、ATMのすべてのアイテムが使用するこれには、また、1であってよいが、1つの余分はそのプレイヤー1プラスクリックから来たという事実2、原因です。

どのように私は両方の個別の作業にこれを変更することができますか?

リチャードDapice:

事であなたが呼び出すことができますされnotifyItemChanged(position)、変更された行の位置に、それが唯一のリサイクルビューにそのアイテムを更新します。

代わりにtotalCounterであなたのカウントを保持し、あなたは、すでに割り当てられているviewholderから値を取得するようなものができそう 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);
                }

            }

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=231081&siteId=1