很高兴从适配器传递View.setTag()的TextView并稍后为它设置动画

时间:2014-02-03 00:10:53

标签: android android-layout android-listview

当我向右投掷时,我想动画我的textView。对于删除textView的行为,我将动画关联起来。

在myAdapter上的getView上我做了这个:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null) {
        vi = inflater.inflate(R.layout.list_row, null);
    }
    Card card = deck.get(position);
    TextView tv = (TextView) vi.findViewById(R.id.txtTime);
    tv.setText(card.toTimeString());
    vi.setTag(tv);
    return vi;
}

在我的列表Activity中,我恢复使用pointToPosition轻触的TextView并尝试对其进行动画处理,但不会发生:调用onFling方法,但动画不起作用。

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
    int position = getListView().pointToPosition((int) e1.getX(), (int) e1.getY());
    if (e1.getX() < e2.getX()){
        return fling (position);
    }else{
        return reverseFling (position);
    }

}

private boolean fling(int position) {
    View view = getListAdapter().getView(position, null, getListView());
    TextView tv = (TextView) view.getTag();
    tv.animate().alpha(0).setDuration(230).translationX(333);
    return true;

}

private boolean reverseFling(int position) {
    Log.i(tag, "reverseFling");
    return true;
}

1 个答案:

答案 0 :(得分:0)

我用它来解决它:

    View view = getListAdapter().getView(position, null, getListView());
    TextView tv = (TextView) view.getTag();
    TextView theTv = (TextView) findViewById(tv.getId());
    theTv.animate().alpha(0).setDuration(230).translationX(333);
    return true;

但仍然不知道为什么我不能直接为电视TextView制作动画。