首页 > 解决方案 > Java:如何让 RecyclerView 的项目编号在 Activity 中更改为相同的编号?(即时的)

问题描述

正如标题所说,我需要使 RecyclerView 项目编号,更改为相同的编号,它在同一个 Activity 中(实时)。因此,当 Activity 中的数字发生变化时,RecyclerView 项中的数字也应更改为相同的数字。

在此处输入图像描述

游戏开始时,标准杆号码和 RecyclerView 中的号码与应有的相同,但...

在此处输入图像描述

现在第 2 洞的标准杆号码更改为 3,但那些 RecyclerView 项目号码仍然是 4,但它们也应该是 3。我怎样才能使这种变化发生?

这是我的适配器:

@Override
    public void onBindViewHolder(@NonNull GameViewHolder holder, int position) {
        GameItem currentItem = mGameList.get(position);

        holder.mTextPlayer.setText(currentItem.getText1());
        holder.mTextPar.setText(currentItem.getText2());

        /** If persons par number is smaller than course par number, then change persons par number background to blue **/
        if (Integer.parseInt(holder.mTextPar.getText().toString()) == 1) {
            holder.mTextPar.setBackgroundResource(R.drawable.border_box_yellow);
        } else if (Integer.parseInt(holder.mTextPar.getText().toString()) < Integer.parseInt(ActivityGame.mParNm.getText().toString())) {
            holder.mTextPar.setBackgroundResource(R.drawable.border_box_blue);
        } else if (Integer.parseInt(holder.mTextPar.getText().toString()) > Integer.parseInt(ActivityGame.mParNm.getText().toString())) {
            holder.mTextPar.setBackgroundResource(R.drawable.border_box_red);
        } else if (Integer.parseInt(holder.mTextPar.getText().toString()) == Integer.parseInt(ActivityGame.mParNm.getText().toString())) {
            holder.mTextPar.setBackgroundResource(R.drawable.border_box_green);
        }

在我的 GameAdapter 中,我设置了这些项目的背景颜色(也根据那个标准号码)我试图做:

holder.mTextPar.setText(ActivityGame.mParNm.getText().toString());

这意味着我尝试根据 Par number 设置数字,但它根本没有改变,它只是改变了项目的背景,但数字保持不变。

标签: javaandroid

解决方案


您必须在适配器时修复的 GameList 模型中添加一个整数字段,该字段与活动值相同。

class GameList{
    String testPar;
    }

那么如果在 Activity 中更改了文本,您必须将所有 List 的 GameList 对象更改为当前的活动文本并调用

// index in which you want to change text in list
gameList.get(index).setTestPar(currentTextOfActivityTextView);
adapter.notifyDataSetChanged();

推荐阅读