首页 > 解决方案 > ArrayAdapter 上的方法 getView 没有被调用?

问题描述

我想用自定义 ArrayAdapter 设置刷卡。问题是我需要等到我获得所有用户(对于卡),但是当我从 firebase 的 onDataChange 方法中调用我的适配器时,它根本不起作用。

这是我的适配器:

public class CardAdapter2 extends ArrayAdapter<User> {

    private int resourceLayout;
    private Context mContext;

    public CardAdapter2(Context context, int resource, List<User> items) {
        super(context, resource, items);
        this.resourceLayout = resource;
        this.mContext = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(resourceLayout, parent, false);

        TextView text = convertView.findViewById(R.id.text);
        text.setText(getItem(position).getName() + "aaaaaa");

        return convertView;
    }
}

MainActivity 中应该调用适配器的方法:

    private void retrieveProfiles() {
        Util.getmUserDatabaseRef().child(Util.getFbUser().getUid()).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                //for (DataSnapshot snap : dataSnapshot.getChildren()) {
                userList.add(dataSnapshot.getValue(User.class));
                userList.add(dataSnapshot.getValue(User.class));
                userList.add(dataSnapshot.getValue(User.class));
                //}
                //callCardsAdapter();
                //anyMethod();
                adapter2 = new CardAdapter2(context, R.layout.item, userList);
                cards.setAdapter(adapter2);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

如果我将 setAdapter 放在“onCreate”中,它就没有时间完成 userList。问题是,当我从 onCreate 方法中调用 CardAdapter 时,方法 getView 才会被调用,否则它永远不会被调用。是的,在调用 CardAdapter 之前,列表中有元素。有什么帮助吗?

布局一切正常,用它工作的固定元素对其进行测试,但我需要从数据库中检索对象。

标签: androidandroid-arrayadaptercustom-adaptergetview

解决方案


推荐阅读