Helio Soares Junior
Helio Soares Junior

Reputation: 447

java.lang.IllegalArgumentException in adapter

I want to list the JSON data received with this adapter, however am getting an error that says that he is not managing to find the view, The error I get in the log is "java.lang.IllegalArgumentException: view must not be null"

  public class categoriaAdapter extends ArrayAdapter {

    private List<categoriaModel> categoriaModelList;
    private int resource;
    private LayoutInflater inflater;

    public categoriaAdapter(Context context, int resource, List<categoriaModel> objects) {
        super(context, resource, objects);
        categoriaModelList = objects;
        this.resource = resource;
        inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    }

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

        ViewHolder holder = null;




        if (convertView == null){
            holder = new ViewHolder();
            convertView = inflater.inflate(resource, null);
            holder.imgCategoria = (ImageView)convertView.findViewById(R.id.ivIcon);
            holder.catTitulo = (TextView)convertView.findViewById(R.id.tvMovie);
            holder.catDesc = (TextView)convertView.findViewById(R.id.tvTagline);
            holder.catID = (TextView)convertView.findViewById(R.id.tvYear);
            convertView.setTag(holder);

        } else{
            holder = (ViewHolder) convertView.getTag();
        }

        final ProgressBar progressBar = (ProgressBar)convertView.findViewById(R.id.progressBar);

        ImageLoader.getInstance().displayImage(categoriaModelList.get(position).getImage(), holder.imgCategoria, new ImageLoadingListener() {
            @Override
            public void onLoadingStarted(String imageUri, View view) {
                progressBar.setVisibility(View.VISIBLE);
            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingCancelled(String imageUri, View view) {
                progressBar.setVisibility(View.GONE);
            }
        });



        holder.catTitulo.setText(categoriaModelList.get(position).getNome());
        holder.catDesc.setText(categoriaModelList.get(position).getDescricacao());
        holder.catID.setText(categoriaModelList.get(position).getIdeCategoria());



        return convertView;
    }

    class ViewHolder{
        ImageView imgCategoria;
        TextView catTitulo;
        TextView catDesc;
        TextView catID;
    }
}

And my Error logs

Upvotes: 2

Views: 471

Answers (2)

hasn
hasn

Reputation: 797

Check whether you included the right item layout. I had same issue turns out I was using item layout of different activity. And I had duplicated the adapter code.

Upvotes: 0

Fabin Paul
Fabin Paul

Reputation: 1711

Please check your layout(xml) and see if R.id.ivIcon is an imageView or if it is present in the resource layout. Make sure imgCategoria is not null and is properly initialised before calling displayImage.

Also initialize ImageLoader configuration. i.e.

 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();
 ImageLoader.getInstance().init(config);
 ImageLoader.getInstance().displayImage(categoriaModelList.get(position).getImage(), holder.imgCategoria, new ImageLoadingListener() {
        @Override
        public void onLoadingStarted(String imageUri, View view) {
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
            progressBar.setVisibility(View.GONE);
        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            progressBar.setVisibility(View.GONE);
        }

        @Override
        public void onLoadingCancelled(String imageUri, View view) {
            progressBar.setVisibility(View.GONE);
        }
    });

Hope it helps you..

Upvotes: 1

Related Questions