我为ListView
实施了ArrayAdapter,其中每行包含TextView
和ImageButton
。 的ImageButton的背景图像取决于一些条件,有两种选择:Android:动态更改ImageButton的背景并显示它
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item_with_button, null);
File f = new File(PATH_TO_FILE);
if(f.exists()){
imbutton =(ImageButton)vi.findViewById(R.id.btn_image);
imbutton.setBackgroundResource(R.drawable.done);
}else
{
imbutton =(ImageButton)vi.findViewById(R.id.btn_image);
imbutton.setBackgroundResource(R.drawable.download);
imbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String url = URL;
new DownloadFileAsync(pos).execute(url);
}
});
}
...
return vi;
}
如果文件存在,那么我把“做”形象的ImageButton。如果文件不存在,我设置“下载”图像。
用户点击ImageButton
后,文件下载,我需要更改各自的图像。 问题是仅当用户滚动ListView
直到此ImageButton
从屏幕上消失并且然后向后滚动时才调用getView
。在那个按钮出现后,新的背景图像。
但是,我无法使按钮无效以显示新的图像。
我用这个类异步下载:http://www.java-samples.com/showtutorial.php?tutorialid=1521
我试图制造类似currentbutton.invalidate()
在功能
@Override
protected void onPostExecute(String unused) {
activity.dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
但没有成功。
我怎样才能使ImageButton
无效显示其新的背景图像?
辉煌,谢谢 – 2012-03-27 09:52:20