eoe 移动开发者论坛

 找回密码
 加入eoe

QQ登录

只需一步,快速开始

查看: 16713|回复: 12
收起左侧

[Android界面] addView(View, LayoutParams) is not supported in AdapterView

[复制链接]

该用户从未签到

7

主题

90

帖子

348

e币
发表于 2013-2-1 16:04:12 | 显示全部楼层 |阅读模式
10e币
最近尝试inflate一个layout未遂。抛出如上错误。看了源码,Adapter里面addView方法就一句话“throw ...” 我不太清楚要怎么改好,麻烦各位帮忙看下啊。

   代码错误的地方(红色):

          LayoutInflater inflater = LayoutInflater.from(mContext);
          LinearLayout layouttest = (LinearLayout) inflater.inflate(
                     R.layout.wifishow, null).findViewById(R.id.layoutwifishow);

    wifishow.xml:
          <?xml version="1.0" encoding="UTF-8"?>

          <LinearLayout android:id="@+id/layoutwifishow"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_gravity="center_horizontal|center_vertical"
          xmlns:android="http://schemas.android.com/apk/res/android">

                <ListView android:id="@+id/wifibuttonlist"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                </ListView>
          </LinearLayout>

     出错的log:

W/dalvikvm( 3883): threadid=1: thread exiting with uncaught exception (group=0x40dfa300)
E/AndroidRuntime( 3883): FATAL EXCEPTION: main
E/AndroidRuntime( 3883): java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
E/AndroidRuntime( 3883):        at android.widget.AdapterView.addView(AdapterView.java:477)
E/AndroidRuntime( 3883):        at android.view.LayoutInflater.rInflate(LayoutInflater.java:750)
E/AndroidRuntime( 3883):        at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
E/AndroidRuntime( 3883):        at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
E/AndroidRuntime( 3883):        at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
E/AndroidRuntime( 3883):        at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
E/AndroidRuntime( 3883):        at com.example.lg_systemsetup.LG_SystemSetupActivity$6$2.onClick(LG_SystemSetupActivity.java:1361)
E/AndroidRuntime( 3883):        at android.view.View.performClick(View.java:4084)
E/AndroidRuntime( 3883):        at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime( 3883):        at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime( 3883):        at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 3883):        at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 3883):        at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 3883):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3883):        at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 3883):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 3883):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 3883):        at dalvik.system.NativeStart.main(Native Method)
D/dalvikvm( 3883): GC_CONCURRENT freed 762K, 25% free 8704K/11591K, paused 13ms+4ms, total 47ms
W/ActivityManager( 3257):   Force finishing activity com.example.lg_systemsetup/.LG_SystemSetupActivity
D/dalvikvm( 3257): GC_FOR_ALLOC freed 522K, 8% free 8870K/9607K, paused 86ms, total 86ms[   89.382582@0] Mali<2>:
[   89.384095@1] binder: 3883: binder_alloc_buf, no vma

[   89.384105@1] binder: 3257:3282 transaction failed 29201, size 60-0
I/Process ( 3883): Sending signal. PID: 3883 SIG: 9[   89.395937@0] Session has ended


我这个是用到了addview方法吗?本人小白哦,各位可以就技术问题尽情喷,多谢了~~

最佳答案

查看完整内容

哦,明白了。listview呗,这样,你先写一个listview,然后写个adapter,然后绑定上,这个时候listview的数据时空,肯定什么都不显示。然后你去扫描。每次扫描到一个数据,就在listview的 list add 进去,然后notifyDataChanged 。这样就显示出来一个数据,然后下次再扫描出数据,你在重复这个步骤就OK了。 点击那个连接那个,如果你点击整体你就OnItemClick,如果是每项里面有按钮,你就在adpterView里面监听btn的onClick.然后因 ...

该用户从未签到

83

主题

1559

帖子

218

e币
发表于 2013-2-1 16:04:13 | 显示全部楼层
lancoo 发表于 2013-2-2 11:32
我最终是要做一个显示wifi扫描结果(以按钮的形式显示,点击即可连接相应的AP)的list。但技术太菜,没办 ...

哦,明白了。listview呗,这样,你先写一个listview,然后写个adapter,然后绑定上,这个时候listview的数据时空,肯定什么都不显示。然后你去扫描。每次扫描到一个数据,就在listview的  list add 进去,然后notifyDataChanged 。这样就显示出来一个数据,然后下次再扫描出数据,你在重复这个步骤就OK了。
点击那个连接那个,如果你点击整体你就OnItemClick,如果是每项里面有按钮,你就在adpterView里面监听btn的onClick.然后因为listView的每个position都能和list的数据对应起来。能够拿到你扫描到的相应的信息

该用户从未签到

7

主题

90

帖子

348

e币
 楼主| 发表于 2013-2-1 16:15:14 | 显示全部楼层
这是什么时候调用的?
@Override
     public void  addView(View child, LayoutParams params) {
         throw new UnsupportedOperationException("addView(View, LayoutParams) "
                 + "is not supported in AdapterView");
     }

该用户从未签到

7

主题

90

帖子

348

e币
 楼主| 发表于 2013-2-1 20:59:04 | 显示全部楼层
斑竹啊,为什么提醒我有人回帖但看不到??

该用户从未签到

20

主题

411

帖子

574

e币
发表于 2013-2-2 10:14:20 | 显示全部楼层
LayoutInflater mInflater= LayoutInflater.from(mContext);
View view=  mInflater.inflate(R.layout.wifishow, null);
LinearLayout layoutTest=view.findViewById(R.id.layoutwifishow);
尽量将代码分开了实例,能更好地知道哪些

点评

Error显示出错的调用情况: inflate() --> rInflate() --> AddView() . 也尝试分开一步一步来,但到inflate对会这样碰到AddView(),然后报错。  详情 回复 发表于 2013-2-2 11:02
大哥,,,adapterView本来就不支持addView的啊。他的数据是adapter提供的,人家的那些从用啊神的,你add进去的话他就乱了。所以在这里如果你调用addView的话,就给抛出异常啊。。。  详情 回复 发表于 2013-2-2 10:27

该用户从未签到

83

主题

1559

帖子

218

e币
发表于 2013-2-2 10:27:05 | 显示全部楼层
tclx1989 发表于 2013-2-2 10:14
LayoutInflater mInflater= LayoutInflater.from(mContext);
View view=  mInflater.inflate(R.layout.wi ...

大哥,,,adapterView本来就不支持addView的啊。他的数据是adapter提供的,人家的那些从用啊神的,你add进去的话他就乱了。所以在这里如果你调用addView的话,就给抛出异常啊。。。

点评

addview 不是自己写的,是它报的错,应该是重用的,怎么破  详情 回复 发表于 2014-11-24 10:06
我现在了解adapterView是不支持addView的了。 但现在要怎么才能inflate呢?我感觉只要用LayoutInflater,那肯定会跑到出错的地方去啊“AdapterView.addView(AdapterView.java:477)”。 我只是想实现inflate一个布局而  详情 回复 发表于 2013-2-2 10:58

该用户从未签到

7

主题

90

帖子

348

e币
 楼主| 发表于 2013-2-2 10:58:15 | 显示全部楼层
bethkede 发表于 2013-2-2 10:27
大哥,,,adapterView本来就不支持addView的啊。他的数据是adapter提供的,人家的那些从用啊神的,你add ...

我现在了解adapterView是不支持addView的了。
但现在要怎么才能inflate呢?我感觉只要用LayoutInflater,那肯定会跑到出错的地方去啊“AdapterView.addView(AdapterView.java:477)”。
我只是想实现inflate一个布局而已,上网看都是这样实现的,但我这里就不行。

该用户从未签到

83

主题

1559

帖子

218

e币
发表于 2013-2-2 11:00:01 | 显示全部楼层
你要做什么?如果是改变listView里面的数据,就改变数据源,然后notify。如果增加一个快顶部的布局,就addHeader,如果增加底部的布局就addFooter。。。。OK?

点评

我最终是要做一个显示wifi扫描结果(以按钮的形式显示,点击即可连接相应的AP)的list。但技术太菜,没办法一步搞定,所以想先能随便show一组按钮,然后把wifi扫描得到的AP name贴上去。 我写的show按钮步骤: 1、xm  详情 回复 发表于 2013-2-2 11:32

该用户从未签到

7

主题

90

帖子

348

e币
 楼主| 发表于 2013-2-2 11:02:33 | 显示全部楼层
tclx1989 发表于 2013-2-2 10:14
LayoutInflater mInflater= LayoutInflater.from(mContext);
View view=  mInflater.inflate(R.layout.wi ...

Error显示出错的调用情况:
inflate() -->  rInflate() --> AddView() .
也尝试分开一步一步来,但到inflate对会这样碰到AddView(),然后报错。

该用户从未签到

7

主题

90

帖子

348

e币
 楼主| 发表于 2013-2-2 11:32:30 | 显示全部楼层
本帖最后由 lancoo 于 2013-2-2 11:34 编辑
bethkede 发表于 2013-2-2 11:00
你要做什么?如果是改变listView里面的数据,就改变数据源,然后notify。如果增加一个快顶部的布局,就addH ...

我最终是要做一个显示wifi扫描结果(以按钮的形式显示,点击即可连接相应的AP)的list。但技术太菜,没办法一步搞定,所以想先能随便show一组按钮,然后把wifi扫描得到的AP name贴上去。
我写的show按钮步骤:
1、xml文件实现单独布局,就是wifishow.xml文件;
2、主界面ListView利用baseAdapter与wifishow.xml相连,然后新建一个wifiresult.xml放在baseAdapter的getview中。
现在就是想弄下第一步。把这个xml文件动态打到界面上,你的意思是需要先写baseAdapter吗?不然会没有数据来源,就会出现AddView的情况?


我还想再请教一下,我最终要做的东东有没有好的实现方式啊?想想头大... ...

点评

哦,明白了。listview呗,这样,你先写一个listview,然后写个adapter,然后绑定上,这个时候listview的数据时空,肯定什么都不显示。然后你去扫描。每次扫描到一个数据,就在listview的 list add 进去,然后notify  详情 回复 发表于 2013-2-2 11:36

该用户从未签到

7

主题

90

帖子

348

e币
 楼主| 发表于 2013-2-2 11:46:51 | 显示全部楼层
恩,和我的想法差不多哦,我是想baseAdapter里面把按钮功能实现,按照wifiresult name 和 ID 在实现底层的wifi连接。






我先整体试一下吧,但愿不要再出现那个鬼错误。

该用户从未签到

0

主题

114

帖子

929

e币
发表于 2014-11-24 10:06:35 | 显示全部楼层
bethkede 发表于 2013-2-2 10:27
大哥,,,adapterView本来就不支持addView的啊。他的数据是adapter提供的,人家的那些从用啊神的,你add ...

addview 不是自己写的,是它报的错,应该是重用的,怎么破

签到天数: 2 天

连续签到: 1 天

[LV.1]初来乍到

0

主题

4

帖子

19

e币
发表于 2015-3-17 16:05:46 | 显示全部楼层
我也出现了同样的错误,并没有引用那个addview();主要是main.xml文件里面有个textview控件,并没有用,但是R.id.main的时候把他加载了,所以出现了这样的错误
*滑动验证:
您需要登录后才可以回帖 登录 | 加入eoe

本版积分规则

推荐阅读
赞助商们

QQ|联系我们|小黑屋|手机版|eoe 移动开发者论坛 ( 京ICP备11018032 京公网安11010802020210  

GMT+8, 2018-1-22 20:20 , Processed in 0.631899 second(s), 43 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
关闭

扫一扫 关注eoe官方微信