从CardView内部的TextView中更改文本

时间:2016-04-19 16:03:36

标签: 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");

无法从内部类访问它。 有没有人知道如何从卡片视图中更改文本。

更新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;
    }

2 个答案:

答案 0 :(得分:2)

而不是,

TextView description;

制作它,

public TextView description;

修改 更改以下内容,

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

要,

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

答案 1 :(得分:1)

我使用此代码并且工作正常,您只需要使用onBind方法。 这是一个例子,我在我的项目中使用它,你可以根据自己的需要进行更改:

public void onBindViewHolder(final TipsViewHolder TipsViewHolder, final int i) {

        TipsViewHolder.cardText.setText("Old text");

        TipsViewHolder.txtBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                TipsViewHolder.cardText.setText("New Text");

            }
        });
}