Java: Cómo hacer propio contador del número de total para cada artículo RecyclerView?

antsakontsa:

Necesito hacer un contador de número total de cada artículo individual RecyclerView. Aquí hay una imagen y el código para borrar esta situación a cabo:

introducir descripción de la imagen aquí

TTL es que contador total que necesito. Cuando hago clic en el jugador 1 símbolo más, contador total en ese tema en particular se debe aumentar en 1 y el símbolo menos disminución de 1.

Lo que tengo en este momento:

ViewHolder (menos asa y más símbolos):

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);
                    }
                }
            }
        });
    }
}

En la Actividad:

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();
                }
            }
        });

Así que esto es lo que tengo ahora, pero atm cada usos artículo ese mismo itemCounter, por lo que si hago clic en el jugador 1 más una tecla, su TTL es 1 (como debería), pero después de eso cuando hago clic en el jugador 2 más una tecla, el jugador 2 TTL debe también será 1, pero es, de hecho, 2, causa que 1 adicional provino de que el jugador 1, más clic.

¿Cómo puedo cambiar esto funcione tanto de forma individual?

Richard Dapice:

En cosa es que se puede llamar notifyItemChanged(position), de la posición de la fila que ha cambiado, sólo se actualizará ese elemento en la vista de reciclaje.

En lugar de mantener su recuento en totalCounter, se puede obtener el valor de la viewholder que ya está asignado, así que algo como 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);
                }

            }

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=231084&siteId=1
Recomendado
Clasificación