【问题标题】:Android Custom Adapter generate blank screen and position always 0Android自定义适配器生成空白屏幕和位置始终为0
【发布时间】:2017-04-25 09:04:25
【问题描述】:

请帮忙,所以当我创建硬编码字符串数组时,它会显示在网格视图中。所以我创建了一个名为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;
    }

}

【问题讨论】:

    标签: android gridview listadapter


    【解决方案1】:

    您能否检查一下 - 在 getView 函数中,tempMovie 对象是否正在被填充? 我猜 tempMovie 对象没有被填充。

    【讨论】:

    • 嗨,Rohan,谢谢您的回复,是的,我检查了,tempMovie 正在填充...但是由于位置停留在 0,它只是填充第一个。但我会再次查看它,确保它正确填充,也许这就是它卡在 0 的原因。
    • @JerryCheng - 是的,正确,位置值需要更新。
    • 如何更新位置值?这不是适配器的重点,自动更新吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多