Android自定义适配器生成空白屏幕,位置始终为0

时间:2017-04-25 09:04:25

标签: android gridview listadapter

请帮助,所以当我创建硬编码的String数组时,它会显示在gridview中。所以我创建了一个名为movie的类来存储电影标题和电影海报url路径来获取图像。当我运行应用程序时,我得到一个空白屏幕。以下附件是我的适配器代码,当我调试时,我检查数据列表和我得到的值是正确的。电影标题以及海报图片路径。列表适配器的位置始终保持为0.请告诉我这是否足够,如果不是,我也可以发布我的主要活动代码。

public class MovieListAdapter extends BaseAdapter {

    public Context mContext;
    public ArrayList<Movie> malAdapterMoviesList;

    public MovieListAdapter(Context context, ArrayList<Movie> movies) {
        this.mContext = context;
        this.malAdapterMoviesList = movies;
    }

    @Override
    public int getCount() { return malAdapterMoviesList.size(); }

    @Override
    public Object getItem(int position) { return 
        malAdapterMoviesList.get(position); }

    @Override
    public long getItemId(int position) { return position; }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Movie tempMovie = malAdapterMoviesList.get(position);

        if(convertView == null) {
            convertView = LayoutInflater.from(mContext)
                    .inflate(R.layout.movie_list_item, parent, false);
        }

        ImageView mMoviePoster = (ImageView) 
            convertView.findViewById(R.id.ivImageView);
        TextView mMovieTitle = (TextView) 
            convertView.findViewById(R.id.tvMovieTitle);
        mMovieTitle.setText(tempMovie.getOriginalTitle());

        Picasso
            .with(mContext)
            .load(tempMovie.getImagePosterStr())
            .fit()
            .into(mMoviePoster);

        return convertView;
    }

}

2 个答案:

答案 0 :(得分:0)

请你检查一下 - 在getView函数中是 tempMovie 对象是否已经填充? 我猜tempMovie对象没有被填充。

答案 1 :(得分:0)

所以我发现了问题所在。在显示空白屏幕之前,因为在使用AsyncTask时,UI在加载数据之前显示视图。我在调试时发现了这一点,当我逐步完成代码生成视图时。所以我查了一下,它显示原因是因为我需要使用onPostExecute来设置并在doInBackground完成时将数据加载到视图中