我想创建一个可扩展的TextView,它显示在ListView
中。在我的ListView
Adapter
的{{1}}方法中,我需要检查TextView是否已经过椭圆化以显示“展开”按钮。
我使用的是EllipsizingTextView,原因是旧版本的Android版本为bug。
EllipsizingTextView提供了一个名为getView
的方法。当我在我的isEllipsized
方法中为EllipsizingTextView调用此方法时,我总是得到getView
。正如我发现的那样,false
方法仅适用于已经绘制的视图。
因此,我尝试使用isEllipsized
从单独的isEllipsized
调用Runnable
。这适用于首次加载列表项后EllipsizingTextView中显示的第一个项目。
然而,当我向下滚动TextView.post(Runnable runnable)
时,总是返回false。当我再次向上滚动时isEllipsized
返回每个列表项的正确布尔值。
有谁知道我做错了什么?感谢任何提示。
这是我在单独的类中使用的getView方法:
isEllipsized
和我的XML:
private EllipsizingTextView textView;
private int position;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.list_item, null, false);
holder.text = (EllipsizingTextView) convertView.findViewById(R.id.label);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(position + " " + this.text);
this.textView = holder.text;
this.position = position;
Runnable r = new Runnable() {
@Override
public void run() {
Log.d("tag", TestObject.this.position +
" isEllipsized " + TestObject.this.textView.isEllipsized());
}
};
holder.text.post(r);
return convertView;
}