Search code examples
javaandroidandroid-studioadapter

getView-method in customized Adapter is not called


im working on a tank-game. in this tank-game i want to display the items which the player can use(shild,firework,atombomb)i want to realise this with a listview and a arraya-dapter. i've made a customized ArrayAdapter like i found it in much answers but it didnt work. The list is not there after i set the adapter. After i debug the project i came to the conclusion that the getView-method in the adapter class isnt called why? This is my adapter class

public class Adapter extends ArrayAdapter {

    private Context context;
    private ArrayList<Item> items;

    public Adapter(@NonNull Context context, ArrayList<Item> items) {
        super(context, R.layout.listview_item);
        this.context = context;
        this.items = items;

    }

    @NonNull
    @Override
    public View getView(int position,  View convertView, ViewGroup parent) {
        ViewHolder viewHolder = new ViewHolder();
        if(convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.listview_item, parent, false);
            viewHolder.imageView = convertView.findViewById(R.id.imageView);
            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder) convertView.getTag();
        }
            viewHolder.imageView.setImageBitmap(items.get(position).getImageView());

        return convertView;
    }

    static class  ViewHolder{
        ImageView imageView;

    }
}

Here i want to set the adapter

public void createList(ListView listView){

    Adapter adapter = new Adapter(context,tanks.get(currentTank).getItems());
    listView.setAdapter(adapter);

}

Solution

  • public Adapter(@NonNull Context context, ArrayList<Item> items) {
            super(context, R.layout.listview_item);
            this.context = context;
            this.items = items;
    
        }
    

    Instead of this try this :

    public MyCustomListAdapter(Context context,int resource, ArrayList<Item> items)
        {
            super(context,resource,list);
            this.context= context;
            this.resource=resource;
            this.list=list;
        }
    

    Also in your main class write this code:

    Adapter adapter = new Adapter(context,R.layout.<Thename of your layout>,tanks.get(currentTank).getItems());