Android - 编程风格 - RecyclerView - 在 ViewHolder 或 onBindViewHolder 中使用 SetText?

标签 android data-binding android-recyclerview settext android-viewholder

OnClickListeners 设置为 RecyclerView 中的项目时,建议在内部类中执行此操作,如下所示:

public ViewHolder(View itemView) {
    super(itemVIew);
    nameTextView = (TextView) itemView.findViewById(R.id.item_name);
    itemView.setOnClickListener(this);
}

当我看到设置文本的代码时,它通常位于 onBindViewHolder 方法中:

@Override
public void onBindViewHolder(SetPlayerNameViewHolder holder, int position) {
    holder.nameTextView.setText(String.valueOf("Random Text"));
}

如果文本永远不会改变,它不应该在内部类中吗?

public ViewHolder(View itemView) {
    super(itemVIew);
    nameTextView = (TextView) itemView.findViewById(R.id.item_name);
    nameTextView.setText(String.valueOf("Random Text"));
    itemView.setOnClickListener(this);
}

编辑:如果您检索到的值对于所有 TextView 都不同,但在 RecyclerView 重新加载时不应更新,该怎么办

public ViewHolder(View itemView) {
    super(itemVIew);
    nameTextView = (TextView) itemView.findViewById(R.id.item_name);

    // Not the actual methods, but to make it more readable
    int i = itemView.getPosition()
    String randomText = getTextFromDatabaseWhereRowIs(i)

    nameTextView.setText(String.valueOf(randomText));
    itemView.setOnClickListener(this);
}

最佳答案

是的,你是对的......

1. onBindViewHolder(..., intposition)RecyclerView单个 项调用。如果每个 itemtext 都不同,那么您应该使用 onBindViewHolder() 使用 position 来获取正确的文本

@Override
public void onBindViewHolder(SetPlayerNameViewHolder holder, int position) {
    String item = YourList.get(position); // For example YourList is an ArrayList of String
    holder.nameTextView.setText(item);
}

2.如果每个itemtext是固定的,那么您可以按照您所说的从ViewHolder设置它或者您可以使用 android:text="YOUR_TEXT" 从 TextView XML 修复它。

public ViewHolder(View itemView) {
    super(itemVIew);
    nameTextView = (TextView) itemView.findViewById(R.id.item_name);
    nameTextView.setText("Random Text");
}

希望对你有帮助~

关于Android - 编程风格 - RecyclerView - 在 ViewHolder 或 onBindViewHolder 中使用 SetText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43560212/

相关文章:

android - 使用 NotificationListenerService 时 getActiveNotifications 始终为 null

java - 是否有任何在编译时检查数据绑定(bind)的 JVM Web 框架?

android - NestedScrollView 在 Recyclerview 调整大小时滚动到顶部

wpf - 为特定控件设置 WPF 数据上下文

java - Spring 中任意 Model 对象的数据绑定(bind)

android - 三个不同设计的CardView只能用一个RecyclerView吗?

java - 无法解析方法 setEmptyView

android - 当 RecyclerView 在 Dialog 上时不显示分隔符

android - 如何为 ExpandableListView 设置组分隔线颜色

android - 使应用仅适用于支持 sim 的设备