android - 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 之前,列表中有元素。有什么帮助吗?
布局一切正常,用它工作的固定元素对其进行测试,但我需要从数据库中检索对象。
解决方案
推荐阅读
- sas - 在 SAS 中,如何转置一个表,为列中的每个唯一值生成一个虚拟变量
- python - 如何重新导入jupyter html文件?
- jquery - jQueryUI Combobox 不呈现“选择一个...”选项与空值
- amazon-web-services - 如何从 Hive 更新 DynamoDB 表
- arrays - 过滤数组元素以添加到 listView
- mysql - 为什么 MySQL Workbench 执行查询比我的应用程序慢得多?
- wordpress - 从“woocommerce_before_main_content”功能中排除产品页面
- slurm - 列出每个状态的作业数
- mysql - MySQL LOAD DATA LOCAL INFILE 不允许通过 ODBC
- aws-lambda - 调用amazondax服务时获取权限异常