2 qq1010319899 qq1010319899 于 2015.06.15 13:14 提问

数组长度问题,ArrayList的.size和普通数组的.length方法

我自己写了个BaseAdapter,在getCount中返回普通数组.length方法没问题,可是返回ArrayList的.size()方法就出错了 ,求大神解答啊啊啊啊

11个回答

q3733353520
q3733353520   2015.06.15 14:29
已采纳

你上面的那些变量为什么不放在class内?

qq1010319899
qq1010319899 谢谢 果然 放到下面的那一个类就没问题了
2 年多之前 回复
qq1010319899
qq1010319899 还有就是为什么会打印14个。。。 求大神解答啊。。
2 年多之前 回复
qq1010319899
qq1010319899 谢谢 Logcat打印了一下果然出错了 是报空指针 不过我不懂的是为什么报两个空指针后就不再报了
2 年多之前 回复
qq1010319899
qq1010319899 ArrayList<Integer> mList; mList=new ArrayList<Integer>(); mList.add(1); System.out.println(mList);
2 年多之前 回复
q3733353520
q3733353520 回复qq1010319899: 你把mList打印出来看看
2 年多之前 回复
q3733353520
q3733353520 回复qq1010319899: 反正我看报错信息是显示空指针
2 年多之前 回复
q3733353520
q3733353520 回复qq1010319899: 反正我看报错信息是显示空指针
2 年多之前 回复
qq1010319899
qq1010319899 那为什么普通的数组可以用? 再说我是定义了public
2 年多之前 回复
qq1010319899
qq1010319899 ShlefAdapter adapter = new ShlefAdapter(); bookShelf.setAdapter(adapter);
2 年多之前 回复
q3733353520
q3733353520 回复qq1010319899: 那说明你的mList不是这个class的成员变量那你可以那样使用么
2 年多之前 回复
qq1010319899
qq1010319899 放在另一个class类内,只不过没有贴出来
2 年多之前 回复
devmiao
devmiao   Ds   Rxr 2015.06.15 14:00

调试下,看看报什么错误,自己google下错误信息。什么都没有说怎么帮你

lilei_ndsc
lilei_ndsc   2015.06.15 13:19

你把代码贴出来看看啊

qq1010319899
qq1010319899   2015.06.15 13:24

private int[] data = { R.drawable.main_shelf_add };//这个是普通数组
public ArrayList mList;//这个是ArrayList
mList=new ArrayList();
mList.add(R.drawable.main_shelf_add);
class ShlefAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return /*data.length+4*/mList.size();// 每书目增加三,书架数增加一
}

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }

    @Override
    public View getView(int position, View contentView, ViewGroup arg2) {
        // TODO Auto-generated method stub
        if (mList.size() == position) {
            contentView = LayoutInflater.from(getApplicationContext())
                    .inflate(R.layout.item2, null);
        }
        if (mList.size() != position) {
            contentView = LayoutInflater.from(getApplicationContext())
                    .inflate(R.layout.item1, null);

            TextView view = (TextView) contentView
                    .findViewById(R.id.imageView1);

            if (mList.size() > position) {
                view.setBackgroundResource(data[position]);
            } else {
                view.setBackgroundResource(data[0]/*[0]*/);
                view.setClickable(false);
                view.setVisibility(View.INVISIBLE);
            }
        }
        return contentView;
    }

}
qq1010319899
qq1010319899   2015.06.15 13:25

代码很多 就贴了一部分 求大神看看呐。。

baidu_28935457
baidu_28935457   2015.06.15 13:44

ArrayList的.size() 返回分配内存的大小
前者为返回数组长度 到‘\0'结束

qq1010319899
qq1010319899 不懂 两个都是返回数组的长度都是int为什么getcount返回普通数组.length可以而返回ArrayList.size就不可以呢?
2 年多之前 回复
qq1010319899
qq1010319899 不懂 两个都是返回数组的长度都是int为什么getcount返回普通数组.length可以而返回ArrayList.size就不可以呢?
2 年多之前 回复
qq1010319899
qq1010319899   2015.06.15 14:09

![图片说明](http://img.ask.csdn.net/upload/201506/15/1434348550_379004.png)<br>
图片说明
两个图片错误信息就是getcount哪里出错了

beacon_2011
beacon_2011   Rxr 2015.06.15 14:11

报的什么错,吧错误粘出来看看

qq1010319899
qq1010319899 已经贴出来了
2 年多之前 回复
star890124
star890124   2015.06.15 14:28

ArrayList个数的话,应该是 .count 吧

qq1010319899
qq1010319899 java ArrayList中没有count方法
2 年多之前 回复
qq1010319899
qq1010319899 java ArrayList中没有count方法
2 年多之前 回复
qq1010319899
qq1010319899   2015.06.16 16:38

图片说明

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片