【问题标题】:Found two getters or fields with conflicting case sensitivity for property: status发现两个 getter 或属性的区分大小写冲突的字段:状态
【发布时间】:2020-08-05 22:54:27
【问题描述】:

当我运行我的应用程序时,它崩溃并说它获得了两个状态获取器。但在我的代码中,我写的是状态而不是状态。我不知道是什么问题,请帮助我! 这是Contacts.java

public class Contacts
{
    public String name, Status, image;

    public Contacts()
    {

    }

    public Contacts(String name, String Status, String image)
    {
        this.name = name;
        this.Status = Status;
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String status) {
       this. Status = status;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }
}

这里是FindFreindsActivity.java

public class FindFreindsActivity extends AppCompatActivity {
    private Toolbar mToolbar;
    private RecyclerView FindfreindsRecyclerList;

    private DatabaseReference UsersRef;

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

        UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");

        FindfreindsRecyclerList = (RecyclerView) findViewById(R.id.find_freinds_recycler_list);
        FindfreindsRecyclerList.setLayoutManager(new LinearLayoutManager(this));

        mToolbar = (Toolbar) findViewById(R.id.find_freinds_toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("Find Freinds");
    }

    @Override
    protected void onStart()
    {
        FirebaseRecyclerOptions<Contacts> options =
                new FirebaseRecyclerOptions.Builder<Contacts>()
                .setQuery(UsersRef, Contacts.class)
                .build();

        super.onStart();
        FirebaseRecyclerAdapter<Contacts,FindFreindsViewHolder >adapter =
                new FirebaseRecyclerAdapter<Contacts, FindFreindsViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull FindFreindsViewHolder holder, final int position, @NonNull Contacts model) {

                        holder.userName.setText(model.getName());
                        holder.userStatus.setText(model.getStatus());
                        Picasso.get().load(model.getImage()).placeholder(R.drawable.profile_image).into(holder.profileImage);


                    }

                    @NonNull
                    @Override
                    public FindFreindsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
                    {
                        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
                        FindFreindsViewHolder viewHolder = new FindFreindsViewHolder(view);
                        return viewHolder;
                    }
                };

        FindfreindsRecyclerList.setAdapter(adapter);

        adapter.startListening();

    }

    public static class FindFreindsViewHolder extends RecyclerView.ViewHolder
    {
        TextView userName, userStatus;
        CircleImageView profileImage;

        public FindFreindsViewHolder(@NonNull View itemView) {
            super(itemView);


            userName = itemView.findViewById(R.id.user_profile_name);
            userStatus = itemView.findViewById(R.id.user_status);
            profileImage = itemView.findViewById(R.id.users_profile_image);

        }

    }
}

在我的 firebase 数据库中,状态被写为状态,这个活动应该显示所有使用这个应用程序的人,以及他们的个人资料图片、用户名和他们的状态。

【问题讨论】:

  • 请将您的数据库结构添加为 JSON 文件或至少是屏幕截图。

标签: java android firebase firebase-realtime-database


【解决方案1】:

您的联系人对象提供了两种方法来获取名为“状态”的属性。

第一个是您已将Status 设为public 成员:

public String name, Status, image;

第二个是你的访问器方法:

public String getStatus() {
    return Status;
}

编写 POJO 对象的标准方法是使您的字段私有并仅提供公共访问器方法。

改为这样做:

private String name, Status, image;

还可以考虑将status 设为小写,这是Java 对象字段的标准。

【讨论】:

  • 实际上:这些更改中的任何一个都可以解决问题,就像public String name, status, image; 一样,大小写冲突也消失了。
  • @Doug Stevenson 非常感谢您的回答对我有用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多