gpt4 book ai didi

Android:动态更改ImageButton的背景并显示它

转载 作者:行者123 更新时间:2023-11-29 00:40:11 24 4
gpt4 key购买 nike

我为 ListView 实现了 ArrayAdapter,其中每一行都包含 TextViewImageButton。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 无效以显示其新背景图像?

最佳答案

您可以调用 notifyDataSetChanged在 onClick 监听器中强制刷新列表。不过我还没有尝试过,所以我不确定它是否可以在不对适配器进行任何显式更改(即添加、删除或更新适配器上的项目)的情况下工作。

我稍后会检查它,如果开箱即用,我会写下任何进一步的建议。

编辑:实际上你需要调用notifyDataSetChanged在您正在使用的 AsyncTask 的 onPostExecute 方法中,而不是在 onClick 监听器中。

关于Android:动态更改ImageButton的背景并显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com