android - ListView 适配器不能应用于 Modal 类

标签 android firebase firebase-realtime-database

当我尝试为我的 listView 放置适配器时出现错误。它不能应用于我的模态类,即 UserInformation.java。我该如何解决这个问题?

错误:mlistView.setAdapter(adapter)

public class FindDonorActivity extends AppCompatActivity {


ListView mlistView;
DatabaseReference databaseReference;
List<UserInformation> userList;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_find_donor);

    databaseReference = FirebaseDatabase.getInstance().getReference("user");

    mlistView = (ListView) findViewById(R.id.mlistView);

    userList = new ArrayList<>();
}

@Override
protected void onStart() {
    super.onStart();

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            userList.clear();

            for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {

                UserInformation user = userSnapshot.getValue(UserInformation.class);
                userList.add(user);



            }


            UserInformation adapter = new UserInformation(FindDonorActivity.this, userList);
            mlistView.setAdapter(adapter);

        }



        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });


}



}

用户信息.java

public class UserInformation {

        public String useridnumber;
        public String name;
        public String email;
        public String state;
        public String bloodgroup;
        public String lastdonated;

        public UserInformation(FindDonorActivity findDonorActivity, List<UserInformation> userList){


        }

        public UserInformation (String useridnumber, String name, String email, String state, String bloodgroup, String lastdonated){

            this.useridnumber = useridnumber;
            this.name = name;
            this.email = email;
            this.state = state;
            this.bloodgroup = bloodgroup;
            this.lastdonated = lastdonated;

        }

    public String getUseridnumber() {

        return useridnumber;
    }



    public String getBloodgroup() {
        return bloodgroup;
    }

    public String getState() {
        return state;
    }

    public String getLastdonated() {
        return lastdonated;
    }

    public String getEmail() {
        return email;
    }
}

更新:这是我的适配器类

public class UserList extends ArrayAdapter<UserInformation> {

private Activity context;
private List<UserInformation> userList;

public UserList (Activity context, List<UserInformation> userList){
super(context, R.layout.list_layout, userList);
this.context = context;
this.userList = userList;

}

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

    LayoutInflater inflater = context.getLayoutInflater();
    View listViewItem = inflater.inflate(R.layout.list_layout, null, true);

    TextView tvbloodlist = (TextView) listViewItem.findViewById(R.id.tvbloodlist);
    TextView tvstatelist = (TextView) listViewItem.findViewById(R.id.tvstatelist);
    TextView tvdonatedlist = (TextView) listViewItem.findViewById(R.id.tvdonatedlist);
    TextView tvemaillist = (TextView) listViewItem.findViewById(R.id.tvemaillist);

    UserInformation user = userList.get(position);

    tvbloodlist.setText(user.getBloodgroup());
    tvstatelist.setText(user.getState());
    tvdonatedlist.setText(user.getLastdonated());
    tvemaillist.setText(user.getEmail());

    return listViewItem;
}

最佳答案

您需要使用一个ArrayAdapter 并将UserInformation 对象的ArrayList 传递给它。 UserInformation 对象不是 ArrayAdapter。这应该有帮助 - ArrayAdapter

编辑 - 您不应将 FindDonorActivity 的实例传递给 UserInformation 对象。您的 UserInformation 不应引用任何 Activity

关于android - ListView 适配器不能应用于 Modal 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599712/

相关文章:

javascript - 如何从密码字段中隐藏除一个字符以外的所有字符

javascript - Firebase AngularFire $保存不需要的结果

swift - 转换从 Firebase 检索的数据时遇到问题

java - 我想按值从 Firebase 实时数据库中删除值,但我没有它的 key

ios - 我如何从 firebase 数据库中检索时间戳

Android - 定时器功能和 alertDialog

java - 解析颜色 VS 解析 int

android - 将 CardView 的高度设置为屏幕尺寸的自定义百分比

android - Android 上的 Firebase 是否需要 `firebase-core`?

java - Android 11 打开失败 : EACCES (Permission denied)