想象一下带有按钮和文本字段的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;
}
答案 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");
}
});
}