背景 我正在使用baseadapter填充gridview和imageview。使用AsyncTask下载Imageview的资源。我收到来自 onPostExecute 方法的回调为 成功 或 失败 < / strong>即可。我在适配器的 getView 方法中使用此回调。
问题 如果imageview的url返回404错误,则gridview因404错误而有一些空格。我可以删除那些项目并调用notifydatasetchanged,但这次它从一开始就刷新所有gridview。虽然我在某处保留了错误的项目,但删除它们并一次性调用notifydatasetchanged,看起来gridview在应用程序中填充了两次。
的问题 的 我想在gridview中加载图像而没有任何间隙。例如,如果有9个图像,第四个和第六个图像返回404错误,那么我想在gridview中只看到七个项目
我希望我的问题很明确。谢谢你的帮助。
答案 0 :(得分:0)
我这样解决了我的问题。当我从404错误中捕获回调时,在baseadapter getview方法中,
DownloadCallback dc = new DownloadCallback(){
public void onSuccess(String downloadedString){
}
public void onFailure(int callbackID){
System.out.println("onFailure - " + callbackID);
if( callbackID < getCount()) // in case of out of index exception
rows.remove(callbackID);
//parent.removeViewAt(callbackID); we cannot remove it is UNSUPPORTED
reloadFromPosition(callbackID, imageView, parent);
}
};
和reloadFromPosition方法就是这样;
private void reloadFromPosition(int position, View convertView, ViewGroup parent)
{
if( position < getCount())
{
System.out.println("reloadFrom - if - " + position);
getView(position, convertView, parent);
reloadFromPosition(position + 1, parent.getChildAt(position +1), parent);
}
}