android-开发时遇到了addview错误

问题描述

开发时遇到了addview错误

setAdapter()命令报错: "addview is not supported in adapterview"。源码如下:

FilmAdapter.java

package com.pabeda.bicaps.adapters;
import java.util.List;
import com.pabeda.bicaps.R;
import com.pabeda.bicaps.classes.Film;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class FilmAdapter extends ArrayAdapter<Film> {
    Context context;
    int layoutResourceId;
    Film data[]=null;
    public FilmAdapter(Context context, int resource,Film[] objects) {
        super(context, resource, objects);
        // TODO Auto-generated constructor stub

        this.layoutResourceId=layoutResourceId;
        this.context=context;
        this.data=objects;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row=convertView;
        if (row==null) {
            LayoutInflater inflater=((Activity)context).getLayoutInflater();
            inflater.inflate(R.layout.film_list,null);
        }
        ((TextView)row.findViewById(R.id.film_name)).setText(data[position].filmName);
        ((TextView)row.findViewById(R.id.imdb_rating)).setText(data[position].imdbRating);
        return row;
    }
}

设置adapter如下:

FilmAdapter filmadapter=new FilmAdapter(this, R.layout.film_list, film);
GridView gw=(GridView) findViewById(R.id.gridView1);
gw.setAdapter(filmadapter);

res > Layout > film_list.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/film_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/imageView1"
        android:layout_marginLeft="18dp"
        android:layout_marginTop="16dp"
        android:layout_toRightOf="@+id/imageView1"
        android:text="Film ?smi Buraya Gelecek"
        android:textSize="22sp" />
    <ImageView
        android:id="@+id/film_image"
        android:layout_width="85dp"
        android:layout_height="125dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="18dp"
        android:text="IMDB Rating" />
    <TextView
        android:id="@+id/imdb_rating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView2"
        android:layout_alignBottom="@+id/textView2"
        android:layout_marginLeft="16dp"
        android:layout_toRightOf="@+id/textView2"
        android:text="4.9/5" />
</RelativeLayout>

解决方案

这里写法有问题,View row=convertView; convertView给了引用就得给引用赋值,即row = inflater.inflate(R.layout.film_list,null);

 @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row=convertView;
            if (row==null) {
                LayoutInflater inflater=((Activity)context).getLayoutInflater();
                inflater.inflate(R.layout.film_list,null);
            }
            ((TextView)row.findViewById(R.id.film_name)).setText(data[position].filmName);
            ((TextView)row.findViewById(R.id.imdb_rating)).setText(data[position].imdbRating);
            return row;
        }
    也可以改成这样
    @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView==null) {
                LayoutInflater inflater=((Activity)context).getLayoutInflater();
                convertView = inflater.inflate(R.layout.film_list,null);
            }
            ((TextView)convertView.findViewById(R.id.film_name)).setText(data[position].filmName);
            ((TextView)convertView.findViewById(R.id.imdb_rating)).setText(data[position].imdbRating);
            return row;
        }
时间: 2024-08-08 16:19:05

android-开发时遇到了addview错误的相关文章

调试-Android开发时,为何run debug时有很多错误

问题描述 Android开发时,为何run debug时有很多错误 ?发现好多错误------之前一直就是直接跑程序,没有尝试过Debug,试了一下,发现好多异常 解决方案 能不能具体点?什么异常,连个图片都没有 解决方案二:

u boot-fsl i.mx6烧写启动烧写的android系统时出现了初始化错误!

问题描述 fsl i.mx6烧写启动烧写的android系统时出现了初始化错误! U-Boot 2009.08 ( 3??? 05 2013 - 17:20:28) CPU: Freescale i.MX6 family TO1.2 at 792 MHz Temperature: 34 C, calibration data 0x5774e769 mx6q pll1: 792MHz mx6q pll2: 528MHz mx6q pll3: 480MHz mx6q pll8: 50MHz ipg

android开发时,什么时候会出现内存溢出?

问题描述 android开发时,什么时候会出现内存溢出? 在使用MediaPlayer时,出现内存溢出,导致程序异常退出,不知道是哪里出问题了. 解决方案 在开发图像,音频,视屏等应用中容易出现的问题就是内存溢出,需要妥善使用和管理内存. 1.尽量避免创建不必要的对象,提高对象的复用 2.减少将大量数据放入对象中,使用完后及时销毁 解决方案二: 加载图片不当的处理的时候会出现内存溢出,内存溢出其实是Java的回收机制没来得及回收那些没有被调用的对象引起的,一般加载图片时候,去读缓存····还有就

ndroid获得开机通知-Android开发时获得开启的通知

问题描述 Android开发时获得开启的通知 敲代码遇到一个问题,许久未解决,求解:怎么实现收到开机的广播,程序大致的需求是在开机后谈一个对话框,关键是开机这个广播收不到 [查资料说:在应用进程没有启动的情况下是不能接收到的.]若能帮助,感激不尽! 解决方案 <receiver android:name="*.*BootRecerver" android:enabled="true" > <intent-filter android:priorit

无论是eclipse还是myeclipse运行android项目时都出现下列错误

问题描述 无论是eclipse还是myeclipse运行android项目时都出现下列错误 我的JDK无论1.7还是1.8还是没用 解决方案 从eclipse中导入myeclipse项目运行是出现"不能部署到服务器"的错误.用eclipse运行和部署myeclipse项目用eclipse运行和部署myeclipse项目 解决方案二: unsupported major minor version 52.0 解决方案三: http://stackoverflow.com/question

Android开发时在模拟器之间短信的收发详解教程

本文通过运行两个Android模拟器,介绍在Android中如何实现短信服务(SMS,short message service)的功能.通过这个例子,我想带给大家的是:更加熟悉之前介绍过的Android应用程序的概念及技术细节,且通过实例调度大家的兴趣.我之所以选择SMS为例子,主要原因是SMS已经非常成熟了,从中可以发掘更多的信息和技术细节,而且我相信大部分人发短信比打电话多. 1.温故知新 广播接收者:一个广播接收者是这样一个组件,它不做什么事,仅是接受广播公告并作出相应的反应.许多广播源

java android开发-在解决构建路径错误之前不能构建该项目

问题描述 在解决构建路径错误之前不能构建该项目 JAVA初学者,目前正参考<第一行代码>学习中. 在创建HelloWorld应用的时候出现了如下所示报错,项目图标有感叹号出现. 如图示错误为在解决构建路径错误之前不能构建该项目开发-在解决构建路径错误之前不能构建该项目-构建android开发环境"> 下图是SDK manager的内容 我没有下载sample的extra.此外最下面的extra有一个broken source package不知道该如何修复.不知道上面问的构建路

Android开发时尽管已root但是ddms还是没有data路径怎么办_Android

开发android的时候,尽管手机已经root但是DDMS中还是没有data/data路径怎么办? 可以用cmd命令提示符为逐个文件夹设置权限: 打开cmd,输入 adb shell  回车-> su 回车-> chmod 777 /data 回车-> chmod 777 /data/data 回车-> chmod 777 /data/data 回车-> chmod 777 /data/data/你的app包名 回车-> 完成! 如果想要在你的包名中新建一个文件夹,参考

Android开发必备知识 为什么说Kotlin值得一试

1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1.1 Kotlin的身世 写了许久Java,有没有发现其实你写了太多冗余的代码? 后来你体验了一下Python,有没有觉得不写分号的感觉真是超级爽? 你虽然勤勤恳恳,可到头来却被NullPointerException折磨的死去活来,难道就没有受够这种日子么? 直到有一天你发现自己已经写了好几十万行