Java 每次单击按钮时,Firebase都会创建一个新对象

Java 每次单击按钮时,Firebase都会创建一个新对象,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有个问题。每次单击按钮时,我都想将不同的对象保存到firebase实时数据库中,但我遇到了一个问题,因为我有一个购物列表,所以我单击了更多的项目,我想将它们保存到数据库中,但它只保存了我单击的最后一个项目,我想了解我做错了什么。我是Android/Firebase新手,这是我第一次这么做,如果有人能告诉我我做错了什么,那就太棒了。非常感谢你。我会附上代码和数据库的照片 活动: public class FirebaseSearch extends AppCompatActivity { pr

我有个问题。每次单击按钮时,我都想将不同的对象保存到firebase实时数据库中,但我遇到了一个问题,因为我有一个购物列表,所以我单击了更多的项目,我想将它们保存到数据库中,但它只保存了我单击的最后一个项目,我想了解我做错了什么。我是Android/Firebase新手,这是我第一次这么做,如果有人能告诉我我做错了什么,那就太棒了。非常感谢你。我会附上代码和数据库的照片

活动:

public class FirebaseSearch extends AppCompatActivity {

private EditText mSearchField;
private ImageButton mSearchBtn;
private ImageButton AddToCart;
private ImageButton Cart;
int position=0;
String searchText="";

private RecyclerView mResultList;
private DatabaseReference mUserDatabase;



public static int cart_count = 0;



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




    mUserDatabase = FirebaseDatabase.getInstance().getReference("Users");

    mSearchField = findViewById(R.id.search_field);
    mSearchBtn   = findViewById(R.id.search_btn);
    mResultList  = findViewById(R.id.result_list_cart);
    AddToCart    = findViewById(R.id.imageButton2);
    Cart         = findViewById(R.id.cartButton);

    mResultList.setHasFixedSize(true);
    mResultList.setLayoutManager(new LinearLayoutManager(this));

    mSearchBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            searchText = mSearchField.getText().toString();
            firebaseUserSearch(searchText);
        }
    });

    Cart.setOnClickListener(new View.OnClickListener() {
        private Object Tag="Activity";

        @Override
        public void onClick(View v) {
            if (cart_count < 1) {

            } else {
                startActivity(new Intent(FirebaseSearch.this, CartActivity.class));
            }
        }
    });
}



private void firebaseUserSearch(String searchText) {
    Toast.makeText(FirebaseSearch.this, "Started Search", Toast.LENGTH_LONG).show();
    Query firebaseSearchQuery = mUserDatabase.orderByChild("Name").startAt(searchText).endAt(searchText + "\uf8ff");
    FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
            Users.class,
            R.layout.list_layout,
            UsersViewHolder.class,
            firebaseSearchQuery
    ) {
        @Override
        protected void populateViewHolder(UsersViewHolder viewHolder, Users model, int position) {

            viewHolder.getDetails(model.getName(), model.getSurname(),model.getPrice());
            viewHolder.setDetails(model.getName(), model.getSurname(),model.getPrice());
        }
    };
    mResultList.setAdapter(firebaseRecyclerAdapter);
}


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

// View Holder Class
public static class UsersViewHolder extends RecyclerView.ViewHolder {
    View mView;
    String nome;
    String surname;
    Long prezzo;
    public UsersViewHolder(View itemView) {
        super(itemView);
        mView = itemView;
        ImageButton addToCart = (ImageButton)mView.findViewById(R.id.imageButton2);

        addToCart.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {
                Users a = new Users(nome,surname,prezzo);
                FirebaseDatabase database = FirebaseDatabase.getInstance();
                DatabaseReference myRef = database.getReference("Cart");
                myRef.setValue(a);
            }
        });
    }

    public void getDetails(String name,String cognome,Long price){
        nome=name;
        surname=cognome;
        prezzo=price;
    }


    public void setDetails(String name, String surname, Long price) {

        TextView user_name = (TextView) mView.findViewById(R.id.name_text);
        TextView user_surname = (TextView)mView.findViewById(R.id.status_text);
        TextView user_price = (TextView)mView.findViewById(R.id.price);

        user_name.setText(name);
        user_surname.setText(surname);
        user_price.setText(Long.toString(price));

    }
}




}
在此处输入代码

您需要使用推送方法:

当前,您要添加的最后一个数据正在覆盖它之前的数据。push方法将创建一个随机ID并分隔每个用户

或者,如果您使用的是firebase身份验证,则可以使用用户uid而不是push来分隔您要保存的每个用户

myRef.push().setValue(a);