我正在尝试计算RecyclerView适配器中TextView
的行数。
关注answers from other questions(虽然与RecyclerViews无关),我尝试将其添加到我的onBindViewHolder
方法中:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
Message message = messages.get(position);
holder.textView.setText(message.getMessage());
holder.textView.setVisibility(View.VISIBLE);
// Get the number of lines
holder.textView.post(new Runnable() {
@Override
public void run() {
int lineCount = holder.textView.getLineCount();
Log.d("COUNT", String.valueOf(lineCount));
}
});
}
但是当我打开我的应用程序时,第一个RecyclerView项目最初会显示COUNT 0
(即使它有5行)。但是当我向下滚动几个项目然后向上滚动到第一个项目时,它将显示正确的行数(COUNT 5
)。
那么我做错了什么?
答案 0 :(得分:1)
textView
是对布局管理器中转换视图的引用。执行run()
时,holder.textView
可能会在其他项目中使用。
<强>已更新强>
如果您快速滚动,可能无法准备某些视图。您可以检查当前视图中的文本是否等于消息。
Message message = messages.get(position);
holder.textView.setText(message.getMessage());
holder.textView.setVisibility(View.VISIBLE);
// Get the number of lines
holder.textView.post(new Runnable() {
@Override
public void run() {
if (holder.textView.getText().toString().equals(message.getMessage()) {
int lineCount = holder.textView.getLineCount();
Log.d("COUNT", String.valueOf(lineCount));
}
}
});