getView-метод в настроенном адаптере не вызывается - PullRequest
0 голосов
/ 08 октября 2019

я работаю над танком-игрой. В этой игре про танки я хочу отобразить предметы, которые игрок может использовать (шилд, фейерверк, атомная бомба), я хочу реализовать это с помощью списка и массива данных. Я создал настроенный ArrayAdapter, как нашел во многих ответах, но он не работал. Список не существует после того, как я установил адаптер. После отладки проекта я пришел к выводу, что метод getView в классе адаптера не вызывается почему? Это мой класс адаптера

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;

    }
}

Здесь я хочу установить адаптер

public void createList(ListView listView){

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

}

1 Ответ

1 голос
/ 08 октября 2019
public Adapter(@NonNull Context context, ArrayList<Item> items) {
        super(context, R.layout.listview_item);
        this.context = context;
        this.items = items;

    }

Вместо этого попробуйте это:

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

Также в вашем основном классе напишите этот код:

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