0

我正在开发一个应用程序,我在其中解析了公共 facebook 个人资料的 Json。我得到了 imageurl 的字符串并将它们保存到 ArrayList 中,然后在 listView 中实现。一切都很顺利,但有时我的应用程序会因为“数组索引超出范围”或“内存空间异常”而出现错误。无法解决此问题。帮帮我。提前致谢。

我也附上我的代码。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = View.inflate(SocialActivity.this, R.layout.facebook_row, null);
    ImageView iv_user = (ImageView)row.findViewById(R.id.iv_user_pic);
    TextView tv_title, tv_description, tv_time;
    tv_title = (TextView)row.findViewById(R.id.tv_title);
    tv_description = (TextView)row.findViewById(R.id.tv_discription);
    tv_time = (TextView)row.findViewById(R.id.tv_time);
    Button btn_count = (Button)row.findViewById(R.id.btn_arrow);
    //bitmap = DownloadImage(alJson.get(position).strPicUrl);
    tv_title.setText(alJson.get(position).strName);
    tv_description.setText(alJson.get(position).strMessage);
    tv_time.setText(alJson.get(position).strDate);
    btn_count.setText(alJson.get(position).strCount);
    if((alJson.get(position).strPicUrl).equals(null){
        iv_user.setBackgroundResource(R.drawable.contact_img);
    } else{
        iv_user.setImageBitmap(al_bitmap.get(position));
    }
    return row;
}
4

3 回答 3

1

确保 alJson.size() 不为 0
,并尝试记录 alJson.size() 和位置以查看这些值是否有问题

于 2012-06-27T13:39:10.867 回答
0

也许你的 ArrayList alJson 是空的,所以在使用它之前检查一下:

int listsize = alJson.size();
if(listsize>=0 && listsize<=position)
{
    tv_title.setText(alJson.get(position).strName);
    tv_description.setText(alJson.get(position).strMessage);
    tv_time.setText(alJson.get(position).strDate);
    btn_count.setText(alJson.get(position).strCount);

    if((alJson.get(position).strPicUrl).equals("null"){
     iv_user.setBackgroundResource(R.drawable.contact_img);
    }
    else{

    iv_user.setImageBitmap(al_bitmap.get(position));

    }
}
else
{
 //DO SOME CODE HERE
}
于 2012-06-27T13:47:03.267 回答
0

使位置变量最终解决了我的问题

public View getView(final int position, View convertView, ViewGroup parent)
于 2015-11-16T08:19:36.373 回答