2 u010287880 u010287880 于 2014.11.04 10:28 提问

android客户端从服务器获取图片报数组下标越界

速求:各位大神好,帮忙给看一下,刚才运行安卓客户端从服务器获取图片报“数组下标越界”,程序挂掉了,啥原因呢:public class MainActivity extends Activity implements OnScrollListener {
private static final String TAG = null;
private int count=0;
public SimpleAdapter simpleAdapter;
ListView listview;
int lastItemIndex;
private int times = 1;// 表示第几次刷新,从而从数据库中调出不同的数据
public static List> list = new ArrayList>();
View moreView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listview);
// Button button = (Button) findViewById(R.id.button_main);
moreView = getLayoutInflater().inflate(R.layout.load, null);

    // 点击listview的某一项而进入
    listview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            Intent intent = new Intent(MainActivity.this,
                    DetailActivity.class);
            intent.putExtra("id",position);
            startActivity(intent);
        }
    });

            // 向上滑动获取更新,这个更适合一般的常见的操作方式
    count = list.size();
    String[] items = { "img", "title", "list_item" };
    int[] ids = { R.id.list_item, R.id.list_name, R.id.list_detail };
    simpleAdapter = new SimpleAdapter(this, getData(times),
            R.layout.activity_list, items, ids);
    listview.addFooterView(moreView);
    listview.setAdapter(simpleAdapter);
    // 这段代码是现实自定义位图所必需的,较为简单,直接放上即可
    simpleAdapter.setViewBinder(new ViewBinder() {
        public boolean setViewValue(View view, Object data,
                String textRepresentation) {
            if (view instanceof ImageView && data instanceof Drawable) {
                ImageView iv = (ImageView) view;
                iv.setImageDrawable((Drawable) data);
                return true;
            } else
                return false;
        }
    });
    // 滑动获取更新,这个更适合一般的常见的操作方法,this是因为集成了相应的接口可以直接这样写,然后必须有其全部实现
    listview.setOnScrollListener(this);
}

// 从服务器获取数据并将要现实的数据封装成List
List<HashMap<String, Object>> getData(int num) {
    times=times+1;
    List<NameValuePair> lists = new ArrayList<NameValuePair>();
    // 使得请求格式较为统一
    lists.add(new BasicNameValuePair("id", num + ""));
    // 网络请求
    Thread httpThread = new Thread(new HttpUtil(HttpUtil.httpUrl + "show",
            lists));
    httpThread.start();
    // 直到新线程出栈,主线程运行
    try {
        httpThread.join();
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    String result = HttpUtil.result;
    String[] results = result.split(";");
    for (int i = 0; i < results.length; i++) {
        HashMap<String, Object> map = new HashMap<String, Object>();
        String[] item = results[i].split(",");
        String name = item[2];
        String price = item[1];
        String pic = item[0];
        String tag = "item";
        Log.v(tag, item[0]);
        FormatTools format = new FormatTools();
        map.put("img",
                format.Bytes2Drawable(Base64.decode(pic, Base64.DEFAULT)));
        map.put("title", name);
        map.put("list_item", price);
        list.add(map);
    }
    count=list.size();
    return list;
}


//滑动到底部
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (lastItemIndex == simpleAdapter.getCount()-1 && scrollState == this.SCROLL_STATE_IDLE&&lastItemIndex<25) {
        Log.i(TAG, "拉到最底部");
        moreView.setVisibility(view.VISIBLE);
        mHandler.sendEmptyMessage(0);
    }
    if(lastItemIndex>=25){
    Toast.makeText(getApplicationContext(), "没有更多了", Toast.LENGTH_SHORT).show();
    listview.removeFooterView(moreView);
    }
}

//滑动监视器
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lastItemIndex = firstVisibleItem + visibleItemCount - 1 -1;

}

// Handler用于处理UI交互
private Handler mHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        switch (msg.what) {
        case 0:
            getData(times); // 向服务器请求数据
            //直接用这个即可以更新里adapter和listview
            simpleAdapter.notifyDataSetChanged();
            moreView.setVisibility(View.GONE);
            break;
        case 1:

            break;
        default:
            break;
        }
    };
};

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java错误提示-------数组下标越界
错误提示:提示出错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2  意思是数组下标越界 //at Array.main(Array.java:30) import java.util.Scanner; public class Array { public
Adapter getItemViewType() getViewTypeCount()报下标越界异常及解决办法
昨天遇到个问题,我滑动列表的时候,应用一直崩溃报下标越界异常,但不提示我哪一行,我一开始以为是我的数据有问题但是不是.哇 好烦呢! 但我看到我getItemViewType() getViewTypeCount()方法后我明白了 @Override public int getViewTypeCount() { return 3; }
ListView多布局展示 异常 数组下标越界
ListView多布局展示用处很多 该异常如下: 这是怎么回事呢? 具体代码如下: public static final int TYPE_MALE = 1; public static final int TYPE_FEMALE = 2; @Override public int getViewTypeCount() { return 2;
Android从服务器获取图片的两种方法
// 传输网络图片 public Bitmap getPic(String uriPic) { URL imageUrl = null; Bitmap bitmap = null; try { imageUrl = new URL(uriPic); } catch (MalformedURLException e) { e.print
Android和服务器通信,从服务器端获取图片
在android开发过程中,与服务器的通信是无处不在的,今天将要讲一个小问题,就是如何从服务器端获取图片: 我们通过查阅资料得知,服务器端以json的形式发给android客户端图片的url地址,例如:https://img1.doubanio.com//mpic//s28023953.jpg  (这是一幅豆瓣书籍图片) android端获取到该json数据,解析出来这个url地址之后,我们通
关于Java导入excel表格出现下标越界异常的解决方法(个人心得记录)
最近在做java批量导入时经常出现这个异常,先上图 根据这个数组下标越界异常百度上搜索结果一大堆,但没有适合自己的解决办法,只能是自己慢慢摸索了,不过终于被我找到适合自己的解决办法了,上图 图上画圈的地方是找到excel中有数据的最大列数,但是如果建表格的时候不注意,在超出其他列的地方输入了数据,那么就会报上面的越界异常,解决办法就是上面的画圈部分改成自己要导入的列数就可以了 ,比
关于axis2发布服务,用cxf在同个进程调用不同服务时出现数组下标越界问题
有时候我们在同一个方法调用多个webservice的时候,有可能会报数组下标越界问题,出现该问题主要是因为发布webservice时在service.xml使用了同样的schemaNamespace导致的。问题重现: (1)、在axis2中发布了两个webservice:query_log_lzj和insert_log_lzj: 并且这两个webservice的service.xml配置文件的s
java 数组下标越界异常(ArrayIndexOutOfBoundsException)
java 数组下标越界异常(ArrayIndexOutOfBoundsException) java 数组下标越界异常(ArrayIndexOutOfBoundsException)
maven 打包报数组越界问题
昨晚项目急着上线 突然打包出了问题 使用mvn -X package运行发现是arrayindexoutofbound 11117错误 。好奇怪 怎么会越界呢 因为报的不是我业务代码的错而是maven的架包和依赖里的 所以我确定是加保问题 。尝试了几次添加和移除没用  。今天早上来 我新建了一个工程把另一个工程的pom依赖一个一个的放进新项目里打包尝试 最后确认了是json-lib导致的  我把它
ArrayList并发add()可能出现数组下标越界异常 | 10+10<20
ArrayList内部,add()分两步操作,step1检查array容量,step2塞值并将size+1。 假设有2个线程操作同一个ArrayList,且array的容量刚好还可以存一个值。Thread1执行add()的step1后被挂起,这时Thread1“认为”array还有位置可以塞值,然后安心地睡去了;Thread2执行add(),存入一个元素并将size+1,而+1后的size已经大