我的应用程序中有一个listView,在执行期间的某个时刻,我想突出显示一个特定的行。我找到了一些例子,但我一直在收到错误。这是我的代码:
public void animate(int pos){ //pos:position of the row in the list
lv1=(ListView)findViewById(R.id.listView1);
Animation animation = AnimationUtils.loadAnimation(getBaseContext(), R.anim.scale);
((View)lv1.getItemAtPosition(pos)).startAnimation(animation);
}
和scale.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
</set>
如果有人可以帮助我,我会非常感激。
编辑:我想提供一些我刚发现的其他信息。我运行代码时遇到NullPointerException。以下行导致异常
((View)lv1.getItemAtPosition(pos))
我无法获取listView中的项目。我改变了我的程序如下:
public void animate(int pos){ //pos:position of the row in the list
lv1=(ListView)findViewById(R.id.listView1);
View v=lv1.getChildAt(pos);
Toast.makeText(getBaseContext(),Boolean.toString((v==null)),Toast.LENGTH_SHORT).show();
}
它始终显示“true”。我不明白问题出在哪里。
答案 0 :(得分:1)
我不确定这对你有什么帮助,但我发现你的代码对我有用,可以解决我的问题。我使用以下代码获得了相同类型的效果:
//Animation swipe to the right
View view = lv.getChildAt(pos);
Animation animation = AnimationUtils.loadAnimation(TaskMain.this, R.anim.slideright);
view.startAnimation(animation);
然后我想把它激活在我的区域。特别是对于我自己,我在手势上激活了。