我试图在 GridView 中扩充 FrameLayout,但出现异常。这是适配器(BaseAdapter 的子类)中的 getView 方法:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO: Create compound view with image and name overlayed on top
FrameLayout personFrame;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
personFrame = (FrameLayout)inflater.inflate(R.layout.thumbnail, null);
//personFrame = (FrameLayout)View.inflate(mContext, R.layout.thumbnail, null);
personFrame.setLayoutParams(new GridView.LayoutParams(85,85));
} else {
personFrame = (FrameLayout) convertView;
}
....等等
这是我正在膨胀的布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="85px"
android:layout_height="85px">
<ImageView
android:id="@+id/thumbnail_image"
android:layout_height="85px"
android:padding="2px"
android:layout_width="85px"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/person_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="2dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="2dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Me" />
</FrameLayout>
我试过显式设置 LayoutParams 和不显式设置 LayoutParams,每次都遇到相同的异常,即:
E/AndroidRuntime( 420): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
E/AndroidRuntime( 420): at android.widget.GridView.onMeasure(GridView.java:934)
E/AndroidRuntime( 420): at android.view.View.measure(View.java:8171)
E/AndroidRuntime( 420): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
E/AndroidRuntime( 420): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
E/AndroidRuntime( 420): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
E/AndroidRuntime( 420): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
E/AndroidRuntime( 420): at android.view.View.measure(View.java:8171)
E/AndroidRuntime( 420): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
E/AndroidRuntime( 420): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
E/AndroidRuntime( 420): at android.view.View.measure(View.java:8171)
E/AndroidRuntime( 420): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
E/AndroidRuntime( 420): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
E/AndroidRuntime( 420): at android.view.View.measure(View.java:8171)
E/AndroidRuntime( 420): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
E/AndroidRuntime( 420): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
E/AndroidRuntime( 420): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 420): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 420): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 420): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 420): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 420): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 420): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 420): at dalvik.system.NativeStart.main(Native Method)
谁能指出我这里哪里出错了? 非常感谢
最佳答案
实际上从 getView 返回错误的对象(正如您提到的那样)是导致异常的原因。例如,如果您从 FrameLayout 中返回一个按钮而不是 FrameLayout 本身,这将导致您描述的问题。 GridView 代码获取您返回的 View 对象并在 View 层次结构中向上移动一级。它希望在那里找到一个 AbsListView(它将每个 GridView 项目包装在其中)。因为您返回了 FrameLayout 的子元素,所以 GridView 类在它需要 AbsListView 的地方找到了 FrameLayout。
关于android - 在 GridView 中膨胀 FrameLayout 时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210181/
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我正在使用Postgres.app在OSX(10.8.3)上。我已经修改了我的PATH,以便应用程序的bin文件夹位于所有其他文件夹之前。Rammy:~phrogz$whichpg_config/Applications/Postgres.app/Contents/MacOS/bin/pg_config我已经安装了rvm并且可以毫无错误地安装pggem,但是当我需要它时我得到一个错误:Rammy:~phrogz$gem-v1.8.25Rammy:~phrogz$geminstallpgFetching:pg-0.15.1.gem(100%)Buildingnativeextension
我最近对我的计算机(OS-MacOSX10.6.8)进行了删除,并且我正在重新安装我所有的开发工具。我再次安装了RVM;但是,它不会让我安装Ruby1.9.3。到目前为止我已经尝试过:rvminstall1.9.3rvm安装1.9.3-p194rvm安装1.9.3-p448rvminstall1.9.3--with-gcc=clang所有返回相同的命令行错误:Searchingforbinaryrubies,thismighttakesometime.Nobinaryrubiesavailablefor:osx/10.6/x86_64/ruby-1.9.3-p448.Continuin
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U
我刚刚安装了Sphinx(发行版:archlinux)并下载了源代码。然后我为Rails安装了“ThinkingSphinx”插件。我关注了officialpagesetup和thisScreencastfromRyanBates,但是当我尝试为模型建立索引时,出现了这个错误:$rakethinking_sphinx:index(in/home/benoror/Dropbox/Proyectos/cotizahoy)Sphinxcannotbefoundonyoursystem.Youmayneedtoconfigurethefollowingsettingsinyourconfig/
我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token
尝试使用rubytest/test_foo.rb运行minitest单元测试时出现以下错误:Warning:youshouldrequire'minitest/autorun'instead.Warning:oradd'gem"minitest"'before'require"minitest/autorun"'From:/home/emile/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/minitest/autorun.rb:15:```test_foo.rb看起来像这样:require'minitest/autorun'classTestFoo