2014-09-19 67 views
1

这里是我得到的GridView代码:在片段添加GridView控件

public class MoviesFragment extends Fragment { 


AppController instance = AppController.getInstance(); 
List<Movie> movies = new ArrayList<Movie>(); 
String html; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_movies, container, false); 

    GridView gridView; 
     gridView = (GridView) rootView.findViewById(R.layout.fragment_movies); 
     movies = getMoviesList(); 
     gridView.setAdapter(new MoviesAdapter(getActivity(), movies)); 

    return rootView; 
} 

public List<Movie> getMoviesList() 
{ 
    List<Movie> movies = new ArrayList<Movie>(); 

    try { 
     org.jsoup.nodes.Document doc = Jsoup.parse(getActivity().getAssets().open("site.html"), "UTF-8", ""); 
     Elements get = doc.select("div.post.lit > h2"); 
     for (Element element : get) 
     { 
      movies.add(new Movie(element.text())); 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 

    System.out.println(movies.size()); 

    return movies; 
} 


} 

,这里是我的MovieAdapter类项目中的GridView:

public class MoviesAdapter extends ArrayAdapter<Movie> 
{ 


List<Movie> moviesList; 
Context context; 

public MoviesAdapter(Context context, List<Movie> objects) 
{ 
    super(context, android.R.id.content, objects); 
    this.moviesList = objects; 
    this.context = context; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    View view = layoutInflater.inflate(R.layout.fragment_movies_individual, parent); 
    TextView name = (TextView) view.findViewById(R.id.textView1); 
    TextView description = (TextView) view.findViewById(R.id.textView2); 
    name.setText(moviesList.get(position).getName()); 
    description.setText(moviesList.get(position).getDescription()); 
    return view; 
} 
} 

当我运行的应用程序,它只是保持崩溃并将NullPointerException扔在gridView的设置适配器的行中(gridView.setAdapter(new MoviesAdapter(getActivity(), movies)); 我检查了movieList项目并且它正确地填充了)

这里有什么问题?

回答

1

的错误是在这里:

gridView = (GridView) rootView.findViewById(R.layout.fragment_movies); 

您需要提供电网的id作为findViewById(int)参数。现在你提供了布局的ID,这显然是错误的。