检查自定义EllipsizingTextView是否从ListView getView中进行了椭圆化

时间:2013-06-11 20:35:16

标签: java android android-listview textview ellipsis

我想创建一个可扩展的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;
}

0 个答案:

没有答案