У меня проблема. Как вы можете видеть на картинке, есть две кнопки (+ & -) для каждого предмета, который вы можете заказать. Элементы находятся в списке массивов. Теперь, если я нажму «+», я хочу увеличить число 0 между двумя кнопками (чтобы заказать 2 кока-колы или 3 картофеля фри). Количество предметов должно быть видно в середине двух кнопок. То же самое для кнопки «-» с уменьшением числа (но оно не может go ниже 0).
Так что моя проблема в том, что я не знаю, как это сделать. Как сделать кнопки кликабельными для каждого элемента массива?
Следующий xml и java файл классов реконструируют изображение, которое вы видите. Может быть, вы можете помочь мне, я был бы очень благодарен.
OrderActivity. java
package com.nfc.netvision;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
public class OrderActivity extends AppCompatActivity {
RecyclerView recyclerView;
ArrayList<ModelOrder> orderArrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
recyclerView = findViewById(R.id.recyclerview_order_scroll);
orderArrayList = new ArrayList<>();
orderArrayList.add(new ModelOrder(R.drawable.coke, "Coka Cola", "Kaltes Getränml", "6"));
orderArrayList.add(new ModelOrder(R.drawable.fastfood, "Coka Cola", "Kaltes Getränml", "10"));
orderArrayList.add(new ModelOrder(R.drawable.water, "Coka Cola", "Kaltes Getränml", "20"));
orderArrayList.add(new ModelOrder(R.drawable.burger, "Coka Cola", "Kaltes Getränml", "30"));
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
RecyclerView.LayoutManager recLiLayoutManager = layoutManager;
recyclerView.setLayoutManager(recLiLayoutManager);
OrderAdapter adapter = new OrderAdapter(this, orderArrayList);
recyclerView.setAdapter(adapter);
}
}
OrderAdapter. java
package com.nfc.netvision;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> {
private Context mContext;
private ArrayList<ModelOrder> nList;
OrderAdapter(Context context, ArrayList<ModelOrder> list) {
mContext = context;
nList = list;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
View view = layoutInflater.inflate(R.layout.recyclerview_order_items, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
ModelOrder orderItem = nList.get(position);
ImageView image = holder.item_image;
TextView name, place, price;
name = holder.item_name;
place = holder.item_place;
price = holder.item_price;
image.setImageResource(orderItem.getImage());
name.setText(orderItem.getName());
place.setText(orderItem.getPlace());
price.setText(orderItem.getPrice());
}
@Override
public int getItemCount() {
return nList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView item_image;
TextView item_name, item_place, item_price;
public ViewHolder(@NonNull View itemView) {
super(itemView);
item_image = itemView.findViewById(R.id.order_item_image);
item_name = itemView.findViewById(R.id.order_item_name);
item_place = itemView.findViewById(R.id.order_item_place);
item_price = itemView.findViewById(R.id.order_item_price);
}
}
}
ModelOrder. java
package com.nfc.netvision;
public class ModelOrder {
private int image;
private String name, place, price;
public ModelOrder(int image, String name, String place, String price) {
this.image = image;
this.name = name;
this.place = place;
this.price = price;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
recyclerViewer. xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<LinearLayout
android:weightSum="10"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/order_item_image"
android:layout_width="0dp"
android:layout_weight="4"
android:layout_height="128dp"
android:scaleType="centerCrop"
android:src="@drawable/coke"/>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="4"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/order_item_name"
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Name"/>
<TextView
android:id="@+id/order_item_place"
android:text="Description"
android:textSize="14sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView
android:id="@+id/order_item_price"
android:text="€ Preis"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#fff"
android:background="@drawable/capsule_order"
android:layout_height="30dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<TextView
android:id="@+id/order_item_minus"
android:layout_width="28dp"
android:layout_height="28dp"
android:textSize="25dp"
android:layout_gravity="center"
android:gravity="center"
android:background="@drawable/capsule_order"
android:textColor="#fff"
android:textStyle="bold"
android:text="-"/>
<TextView
android:id="@+id/order_item_count"
android:layout_width="28dp"
android:layout_height="28dp"
android:textSize="25dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#000"
android:textStyle="bold"
android:text="00"/>
<TextView
android:id="@+id/order_item_plus"
android:layout_width="28dp"
android:layout_height="28dp"
android:textSize="25dp"
android:layout_gravity="center"
android:gravity="center"
android:background="@drawable/capsule_order"
android:textColor="#fff"
android:textStyle="bold"
android:text="+"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
action_order. xml
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview_order_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</androidx.recyclerview.widget.RecyclerView>
</androidx.core.widget.NestedScrollView>
Редактировать