use*_*218 6 android android-recyclerview
TextView我正在尝试计算RecyclerView 适配器中a 的行数。
根据其他问题的答案(尽管与 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));
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是当我打开我的应用程序时,第一个 RecyclerView 项目将首先显示COUNT 0(即使它有 5 行)。但是,当我向下滚动几个项目,然后向上滚动回第一个项目时,它将显示正确的行数 ( COUNT 5)。
那么我做错了什么?
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));
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |