Reputation: 447
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
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
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