android - 从自身更改 CardView 内的 TextView 中的文本

标签 android android-recyclerview android-cardview

想象一个带有按钮和文本字段的 CardView。当我按下按钮时,文本字段中的文本应该会发生变化。下面给出了我的 recyclerView 的代码,我在其中设置文本和按钮的监听器:

@Override
    public void onBindViewHolder(CategoriesDetailedViewHolder holder, int position) {

        final CategoryDetailedModel model = categoriesDetailedModels.get(position);
        holder.description.setText(model.getQuestion());

        holder.btnPlus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                holder.description.setText("some text");
            }
        });
    }

主要问题在于字符串:

holder.description.setText("some text");

它不能从内部类访问。 有谁知道如何从自身更改卡片 View 中的文本。

更新 1

public class CategoriesDetailedViewHolder extends RecyclerView.ViewHolder{
        CardView cv;
        TextView description;
        TextView positiveCounter;
        TextView negativeCounter;
        TextView btnPlus;
        View negativeCounterWrapper;
        View positiveCounterWrapper;
        CategoriesDetailedViewHolder(View itemView) {
            super(itemView);
            cv = (CardView)itemView.findViewById(R.id.cv);
            description = (TextView)itemView.findViewById(R.id.main_text);
            positiveCounter = (TextView)itemView.findViewById(R.id.tv_positive_count_in_circle);
            negativeCounter = (TextView)itemView.findViewById(R.id.tv_negative_count_in_circle);
            btnPlus = (TextView)itemView.findViewById(R.id.plus_button);

            positiveCounterWrapper = itemView.findViewById(R.id.positive_count_wrapper);
            negativeCounterWrapper = itemView.findViewById(R.id.negative_count_wrapper);
            cv.setPreventCornerOverlap(false);
        }
    }

    @Override
    public CategoriesDetailedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.categories_detailed_list_row_view, parent, false);
        CategoriesDetailedViewHolder pvh = new CategoriesDetailedViewHolder(v);
        context = parent.getContext();
        return pvh;
    }

最佳答案

代替,

TextView description;

成功了,

public TextView description;

编辑: 更改以下内容,

@Override
    public void onBindViewHolder(CategoriesDetailedViewHolder holder, int position) { ... }

到,

@Override 
    public void onBindViewHolder( final CategoriesDetailedViewHolder holder, int position) { .... }

关于android - 从自身更改 CardView 内的 TextView 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36723728/

相关文章:

android - 从 ListView 中选择多个项目并仅更改所选项目的颜色

android - 在 ImageView 上用 Canvas 绘图

android - 如何使用 Jetpack 导航组件修复 CollapsingToolbarLayout 不与 RecyclerView 折叠? (导航界面)

android - 单击时获取卡片数据并传递给 Intent

javascript - ResponsiveVoice.js 无法与 Phonegap 编译器一起正常工作

java - 无法检查单选按钮

java - 在 recyclerview 中滚动时背景颜色或图像洗牌?

android - 回收站 View 点击监听器

java - 当给卡高程 ="0dp"时,CardBackgroundColor 无法工作

java - 在创建 CardView 并将其放入 RecyclerView 后访问 CardView 中的项目