我正在从事坦克游戏。在这个坦克游戏中,我想显示玩家可以使用的物品(剑,烟火,火炮)。我想通过列表视图和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);
}
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());