Android-如何定期将列表项的背景颜色从透明切换为红色?

Android-如何定期将列表项的背景颜色从透明切换为红色?,android,android-listview,android-animation,Android,Android Listview,Android Animation,我有一个listview,我想通过每5秒将每个listitem的背景颜色从透明切换到红色来操纵它。这是自定义BaseAdapter中我的getView方法的代码: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView == null){ viewHolder = ne

我有一个listview,我想通过每5秒将每个listitem的背景颜色从透明切换到红色来操纵它。这是自定义
BaseAdapter
中我的getView方法的代码:

    @Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder;

    if(convertView == null){

        viewHolder = new ViewHolder();

        // store my view in view holder here

        convertView.setTag(viewHolder);

    }
    else{

        viewHolder = (ViewHolder)convertView.getTag();  
    }

    // How do I manipulate this so that the background colour toggles
    // between TRANSPARENT and RED every 5 seconds ?        
    convertView.setBackgroundColor(Color.RED);

    return convertView;
}
我想做的是使用提供定期执行的
计时器切换每个列表元素的背景色。但这究竟需要如何实施?或者,是否有一种更为理想的方式来实现同样的结果

来自:


您可以在
列表视图中为创建的每一行启动此
倒计时程序

您可以创建一个背景
线程
(当有大量列表项时,可以调用主UI
线程
阻塞),在其中创建一个周期
计时器
,一旦一个周期结束,您可以查看所有
列表视图
项目并更改背景颜色:
列表视图.getChildAt(位置).setBackgroundColor(颜色)

下面是一个例子:

    CountDownTimer remainingTimeCounter = new CountDownTimer(futureInMillis, 1000) {

            public void onTick(long millisUntilFinished) {

            }

            public void onFinish() {
                // TODO: restart counter

                futureInMillis = newTime(); // set the same futureInMillis to make it periodic
                this.start();
                listView.getChildAt(i).setBackgroundColor(color);
            }
        }.start();

谢谢你。如果我的理解是正确的,我还必须在listitem消失时取消计时器(Android ListView中的循环现象)。我也想知道实现这一点的最佳方法。@user1841702我自己没有测试过,但这是我最初想到的如何解决您的问题。我会尝试一下,看看会发生什么。@user1841702实际上,我认为这仍然有效。当应用程序重新使用这些行时,将初始化一个新的
倒计时程序
。@Der Golem-是的,你是对的,该功能本身可能非常烦人,但我正在尝试使用适用于列表项的计时器。这只是一个实验。我想用定时器,但是我想知道当一个项目被回收或看不见时如何取消计时器。因为我很忙,我想说的只是最简单的方法是创建重复动画,每5秒改变一次背景,否则如果你创建倒计时,那么每个项目都有一个对象,这也是一个递归函数,wud定义为放慢你的滚动速度。。。我想动画是最适合这里的。。。。
    CountDownTimer remainingTimeCounter = new CountDownTimer(futureInMillis, 1000) {

            public void onTick(long millisUntilFinished) {

            }

            public void onFinish() {
                // TODO: restart counter

                futureInMillis = newTime(); // set the same futureInMillis to make it periodic
                this.start();
                listView.getChildAt(i).setBackgroundColor(color);
            }
        }.start();