android关于GridView显示以及其数据添加的问题
做一个图片显示的功能,之前是程序从后台读取数据流并生成图片存放在List中,然后通过scrollView()显示,现在想将scrollView替换成GridView,初始...
做一个图片显示的功能,之前是程序从后台读取数据流并生成图片存放在List
中,然后通过scrollView()显示,现在想将scrollView替换成GridView,初始化GridView代码如下:
ImageAdapter的代码如下:
然后将GridView加入到LinearLayout中(之前ScrollView也是加入到LinearLayout中),这时就会报错:"java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams",但是我把ImageAdapter类更改如下(相当于改变了数据源):
就一切正常,要声明一点,imageViewList里是有数据的,之前的ScrollView用的就是imageViewList导入数据的就没问题。求救大神,到底是什么原因?如何解决呢? 展开
中,然后通过scrollView()显示,现在想将scrollView替换成GridView,初始化GridView代码如下:
ImageAdapter的代码如下:
然后将GridView加入到LinearLayout中(之前ScrollView也是加入到LinearLayout中),这时就会报错:"java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams",但是我把ImageAdapter类更改如下(相当于改变了数据源):
就一切正常,要声明一点,imageViewList里是有数据的,之前的ScrollView用的就是imageViewList导入数据的就没问题。求救大神,到底是什么原因?如何解决呢? 展开
2个回答
展开全部
这个问题其实很简单
LayoutParams这个类,在ViewGroup的子类下面都会有一个LayoutParams内部类,你如果用混了,肯定是类转换异常了。
打个比方,你用一个LinearLayout 里加了一个textView,而这个textView动态设置了LayoutParams,那么你一定要用LinearLayout.LayoutParams,因为textView的父容器是LinearLayout。同理,当你把textView的父容器改为了Relativelayout的时候,你就要把textView,改成Relativelayout.LayoutParams,否则就是会把LinearLayout.LayoutParams强转为Relativelayout.LayoutParams,而这时候就会报这样的错。
听明白了的话可以自己改了。
你还有一个问题getView里你new了一个imageView,最后又被传进来的imageViewList.get(position)覆盖,那你new的意义在哪里?所以好好理一下你的逻辑,有点问题。
不明白追问或留下QQ
LayoutParams这个类,在ViewGroup的子类下面都会有一个LayoutParams内部类,你如果用混了,肯定是类转换异常了。
打个比方,你用一个LinearLayout 里加了一个textView,而这个textView动态设置了LayoutParams,那么你一定要用LinearLayout.LayoutParams,因为textView的父容器是LinearLayout。同理,当你把textView的父容器改为了Relativelayout的时候,你就要把textView,改成Relativelayout.LayoutParams,否则就是会把LinearLayout.LayoutParams强转为Relativelayout.LayoutParams,而这时候就会报这样的错。
听明白了的话可以自己改了。
你还有一个问题getView里你new了一个imageView,最后又被传进来的imageViewList.get(position)覆盖,那你new的意义在哪里?所以好好理一下你的逻辑,有点问题。
不明白追问或留下QQ
追问
现在就是不清楚到底是什么问题引起的,如果照你说的是LayoutParams的问题,那么上面改之后的代码为什么没有问题?如果我不去设置LayoutParams会有问题吗?
我将getView改成:
return imageViewList.get(position);仅仅一条语句,还是报错
追答
说了半天你还是不明白问题在哪里。
你的imageViewList的代码虽然没有贴出来,但可以肯定的是,你给里面的imageView设置了LayoutParams,而且是.LinearLayout.LayoutParams,而不是AbsListView.LayoutParams。
改过来就好了
展开全部
我只看到这一部分代码,没有通过调试无法走一边程序
但是我看两个Adapter的区别在于,第二个给im数组中添加了一个数据
如果我没猜错的话,你GridView中显示的应该是R.drawable.ic_launcher这个图片。
这说明你imageViewList的数据有问题。你最好通过断点,好好查看下imageViewList里面的数据
不是你要的。
但是我看两个Adapter的区别在于,第二个给im数组中添加了一个数据
如果我没猜错的话,你GridView中显示的应该是R.drawable.ic_launcher这个图片。
这说明你imageViewList的数据有问题。你最好通过断点,好好查看下imageViewList里面的数据
不是你要的。
更多追问追答
追问
imageViewList的值是在Handler中添加的:
imageView.setImageBitmap(BitmapFactory.decodeByteArray(
byteDatas, 0, byteDatas.length, options));
imageViewList.add(imageView);
应该没有错
追答
兄弟 你先别直接用这个
你直接坐一个list 里面全是R.drawable.ic_launcher这个图片。
然后传递到你的GridView中去,看看是不是数据问题。
如果这个也出错,说明你数据有可能没有问题。
如果没错,就说明你图片处理有问题,百度吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询