if (position == 0 || textData.getTag() == 0) 但是textData 会报错找不到
时间: 2024-10-25 10:18:09 浏览: 16
看起来你在 `OperationPanelTaskViewHolder` 中的 `setData` 方法里,`textData.getTag()` 可能返回了错误的结果,导致 `textData.getTag() == 0` 抛出异常。`textData.getTag()` 是获取之前设置的 tag,如果在初始化 `textData.setTag(0)` 后忘记传递正确的值,或者 tag 被其他操作意外清除,可能会找不到 tag。
解决这个问题,首先需要确认 `textData` 初始化的时候是否设置了正确的 tag(比如在构造函数中设置)。其次,检查在 `onClick` 事件处理程序中,是否正确地设置了 "下一集" 的 tag 为 0。代码应该像这样:
```java
OperationPanelTaskViewHolder(textItemView, position == 0 ? 0 : mTaskTitle[position - 1]); // 传入正确的tag值
```
或者在 `setData` 方法中修正:
```java
public void setData(String task, int pos){
textData.setText(task);
if (pos == 0) { // 检查是否为 "下一集",如果是则特殊处理tag
textData.setTag(0);
} else {
textData.setTag(pos);
}
}
```
另外,如果你确定每次创建 ViewHolder 都应当给 "下一集" 设置特定的 tag,可以在适配器的构造函数中就初始化这个 tag:
```java
OperationPanelTaskViewHolder(View itemView, int initialTagForNextEpisode) {
super(itemView);
textData = itemView.findViewById(R.id.text_data);
// ... 其他初始化
if (initialTagForNextEpisode == 0) {
textData.setTag(initialTagForNextEpisode);
}
}
```
请检查并应用相应的修改,看看是否解决了 `textData.getTag()` 找不到的问题。
阅读全文