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导入数据的就没问题。求救大神,到底是什么原因?如何解决呢?
展开
 我来答
双四别阴我
推荐于2016-05-07 · TA获得超过2282个赞
知道大有可为答主
回答量:1250
采纳率:57%
帮助的人:1193万
展开全部
这个问题其实很简单

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。
改过来就好了
遗梦芭蕾
2014-10-13 · TA获得超过371个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:221万
展开全部
我只看到这一部分代码,没有通过调试无法走一边程序
但是我看两个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中去,看看是不是数据问题。
如果这个也出错,说明你数据有可能没有问题。
如果没错,就说明你图片处理有问题,百度吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式