Я новичок в Android и не могу понять, почему, когда я отправляю данные из одного действия в другое, он не запоминает значения, которые я сохранил ранее, и не может показать мне более одного элемента внутри корзина для покупок.
Пример:
У меня есть список покупок и список корзин
Внутри списка покупок у меня есть recycleview
, и у меня есть предметы, которые я могу добавить в корзину, когда я нажимаю кнопку добавления, элемент добавляется в корзину путем отправки данных в действие корзины и показывает мне данные в представлении корзины (этот recycleview
находится внутри операции корзины), но теперь, если я go вернусь с помощью кнопки «Назад» телефона и выберу другой товар из списка покупок, когда я go добавлю в список корзин предыдущий товар, он исчезнет, и я не понимаю, почему, так как я создал ArrayList
и я сохраняю данные внутри него. Может кто-нибудь объяснить мне, что я делаю не так?
Я добавлю 3 фотографии, чтобы объяснить себя лучше.
![enter image description here](https://i.stack.imgur.com/npCze.png)
![enter image description here](https://i.stack.imgur.com/yUsFV.jpg)
На втором рисунке, если я go вернусь из корзины покупок в список покупок и нажмите на C, A из корзины исчезнет, и у меня будет только C.
Это мой код:
Список покупок:
public class FirebaseSearch extends AppCompatActivity {
private EditText mSearchField;
private ImageButton mSearchBtn;
private ImageButton AddToCart;
private ImageButton Cart;
String searchText="";
private RecyclerView mResultList;
private DatabaseReference mUserDatabase;
private static ArrayList<Users> arrayList = new ArrayList<>();
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) {
cart_count++;
Context context = v.getContext();
Intent intent = new Intent(context, CartActivity.class);
intent.putExtra("Name",nome);
intent.putExtra("Surname",surname);
intent.putExtra("Prezzo",Long.toString(prezzo));
context.startActivity(intent);
}
});
}
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));
}
}
}enter code here
Корзина:
public class CartActivity extends AppCompatActivity {
private RecyclerView cities;
private RecyclerView.Adapter adapter;
String nome,cognome;
Long prezzo;
int totalPrice=0;
TextView campoPrezzo;
int position=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
campoPrezzo=findViewById(R.id.TotalPrice);
//Receive the data from the previous activity
String passedArg = getIntent().getExtras().getString("Name");
nome=passedArg;
String passedArg2 = getIntent().getExtras().getString("Surname");
cognome=passedArg2;
Intent intent = getIntent();
String str = intent.getStringExtra("Prezzo");
ArrayList<Users> cities = initCities(nome,cognome,Long. parseLong(str));
this.cities = (RecyclerView) findViewById(R.id.cartList);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
this.cities.setLayoutManager(mLayoutManager);
adapter = new ProductAdapter(cities);
this.cities.setAdapter(adapter);
System.out.println("Prezzo"+returnTotalPrice());
}
private ArrayList<Users> initCities(String nome,String cognome,Long price) {
ArrayList<Users> list = new ArrayList<>();
list.add(position,new Users(nome,cognome,price));
position++;
getTotalPrice(price);
return list;
}
public void getTotalPrice(Long price){
totalPrice+=price;
}
public int returnTotalPrice(){
return totalPrice;
}
}
введите код