即使使用inflate,ImageView setBackgroundRessource也不会更新

时间:2015-06-10 12:49:38

标签: android gridview view timer adapter

我正在尝试从带有边框的gridview更新imageView,为此,我有一个有效的xml文件:

rdf:type

所以我启动了我的Activity,启动了一个计时器,经过15次secondes后,我尝试更新了一个imageView,为此我尝试了这段代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item> 
        <shape android:shape="rectangle">
            <solid android:color="#158CDB" /> 
        </shape>
    </item>   
    <item android:left="3dp" android:right="3dp" android:top="3dp" android:bottom="3dp">  
        <shape android:shape="rectangle"> 
            <solid android:color="#FFFFFF" />
        </shape>
    </item>    
</layer-list> 

所以网格当然是我正在使用的GridView,我检查了我输入if但没有发生任何事情,我不明白为什么......这也是正确的观点,我有好的位置。

如果您需要启动我的功能的计时器:

public void highlightFoodItem(int id) {
    ImageAdapter ia = (ImageAdapter) _grid.getAdapter();
    for (int i = 0; i < ia.getCount(); i++) {
        View currentView = ia.getView(i, null, _grid);
        if(id == Integer.valueOf(currentView.getTag().toString().trim())) {
            currentView.setBackgroundResource(R.drawable.border);
            currentView.invalidate();
        }   
    }
}

如果你能帮助我......

祝你好运, zed13

Ps:原谅我可怜的英语x)

1 个答案:

答案 0 :(得分:0)

好的,我尝试更新从图像适配器获取的视图,但是如果我使用gridView中的函数getChildAt,我成功完成了我现在的功能:

public void highlightFoodItem(int id) {
    ImageAdapter ia = (ImageAdapter) _grid.getAdapter();
    for (int i = 0; i < ia.getCount(); i++) {
        View currentView = ia.getView(i, null, _grid);
        if(id == Integer.valueOf(currentView.getTag().toString().trim())) {
            _grid.getChildAt(i).setBackgroundResource(R.drawable.border_cyan);          
        }   
    }
}