Ich arbeite an einer Android-App, wo Benutzer die Lebensmittelmenge auswählen und zum Kassenbildschirm wechseln, um ähnlich wie foodpanda
, swiggy
zu kaufen.Wie erhält man den Namen des Artikels, der vom Benutzer in der nächsten Aktivität in Android überprüft wird?
Ich kann jedoch den Inhalt des ausgewählten Artikels nicht mit der Menge abrufen. Es zeigt den Paketnamen anstelle des Elementnamens an.
-Code -
public class Food implements Parcelable,Serializable {
String Foodname;
int CartQuantity = 0;
double FoodPrice;
public Food(String Foodname, int cartQuantity, double FoodPrice) {
this.Foodname = Foodname;
this.CartQuantity = cartQuantity;
this.FoodPrice = FoodPrice;
}
protected Food(Parcel in) {
Foodname = in.readString();
CartQuantity = in.readInt();
FoodPrice = in.readDouble();
}
public static final Creator<Food> CREATOR = new Creator<Food>() {
@Override
public Food createFromParcel(Parcel in) {
return new Food(in);
}
@Override
public Food[] newArray(int size) {
return new Food[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.Foodname);
dest.writeInt(this.CartQuantity);
dest.writeDouble(this.FoodPrice);
}
}
ListAdapter.class -
public class ListAdapter extends BaseAdapter {
public ArrayList<Food> listproducts;
private Context context;
public ListAdapter(Context context,ArrayList<Food> listproducts){
this.context=context;
this.listproducts=listproducts;
}
@Override
public int getCount() {
return listproducts.size();
}
@Override
public Food getItem(int position) {
return listproducts.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row;
final ListViewHolder listViewHolder;
if(convertView == null)
{
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.list_item,parent,false);
listViewHolder = new ListViewHolder();
listViewHolder.foodName = row.findViewById(R.id.lblListItem);
listViewHolder.foodPrice = row.findViewById(R.id.lblListItem1);
listViewHolder.cartQuantity = row.findViewById(R.id.integer_number);
listViewHolder.increment = row.findViewById(R.id.increase);
listViewHolder.decrement = row.findViewById(R.id.decrease);
row.setTag(listViewHolder);
}
else
{
row=convertView;
listViewHolder= (ListViewHolder) row.getTag();
}
final Food food=getItem(position);
listViewHolder.foodName.setText(food.Foodname);
listViewHolder.foodPrice.setText(food.FoodPrice+" $");
listViewHolder.cartQuantity.setText(food.CartQuantity+"");
listViewHolder.increment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
updateQuantity(position,listViewHolder.cartQuantity,1);
}
});
//listViewHolder.edTextQuantity.setText("0");
listViewHolder.decrement.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateQuantity(position,listViewHolder.cartQuantity,-1);
}
});
return row;
}
private void updateQuantity(int position, TextView edTextQuantity, int value) {
Food food = getItem(position);
if(value > 0&&food.CartQuantity<10)
{
food.CartQuantity = food.CartQuantity + 1;
}
else
{
if(food.CartQuantity > 0)
{
food.CartQuantity = food.CartQuantity - 1;
}
}
edTextQuantity.setText(food.CartQuantity+"");
}
}
Dies ist, was ich versucht habe, und das ist, was ich von diesem Code bekommen.
Aktivität, wo der Benutzer die Einzelteile wählen
Aktivität zu bestellen, der die ausgewählten Elemente angezeigt werden durch den Benutzer
Statt zeigt den Artikelnamen, Preis und Menge, zeigt es den Paketnamen an. Wie kann ich die erforderlichen Werte durch Ändern des Codes erhalten?
Bitte teilen Sie Ihren Code mit mir, also werde ich Änderungen daran vornehmen. –
@ankitpatidar Sie meinen das komplette Projekt? – Sreyance
Ja, wenn du kannst? –