未调用自定义适配器中的getView方法

时间:2019-10-08 12:51:43

标签: java android android-studio adapter

我正在从事坦克游戏。在这个坦克游戏中,我想显示玩家可以使用的物品(剑,烟火,火炮)。我想通过列表视图和array-dapter实现这一目的。我做了一个自定义的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 个答案:

答案 0 :(得分:1)

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());