2013-07-09 34 views
1

我在setAdapter()命令后得到了“addview在adapterview中不受支持”。 这里是我的源代码:在自定义适配器的adapterview错误中不支持addview

FilmAdapter.java

package com.pabeda.bcps.adapters; 
import java.util.List; 
import com.pabeda.bcps.R; 
import com.pabeda.bcps.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; 

    } 
} 

我设置适配器像这样:

FilmAdapter filmadapter =新FilmAdapter(这一点,R.layout。 film_list,电影);

GridView gw=(GridView) findViewById(R.id.gridView1); 
gw.setAdapter(filmadapter); 

资源>布局> 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> 

回答

1

在你getView方法,你不设置排什么。试试这个:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View row=convertView; 

    if (row==null) { 
     LayoutInflater inflater = LayoutInflater.from(context); 
     row = 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; 
} 

在你的getView当行为空时,你返回null而不是新创建的行。我认为这是你的问题。

希望这会有所帮助...

+0

是的,它像一个魅力。谢谢Christos。 – fobus

相关问题