Android - 使用 EditText 从 RecyclerView 中选择项目

问题描述 投票:0回答:0

我是使用 Java 进行 android 开发的新手。我目前正在制作一个应用程序,用户可以在其中订购一些食物。数据来自数据库。我目前使用回收站视图显示所有食物,并且在每个项目旁边都有一个编辑文本,用户可以在其中设置他们想要订购的每种食物的数量。如果用户在编辑文本上设置一个数字并在下一个活动中显示它,我将如何选择一个项目?

下面的代码和截图。

CustomerCreateOrderAdapter.java

public class CustomerCreateOrderAdapter extends RecyclerView.Adapter {
    String[]dishNames;
    String[]dishAmount;
    String[]dishPrices;
    LayoutInflater mInflater;

    ItemClickListener itemClickListener;

    public CustomerCreateOrderAdapter(Context context, String[]dishNames, String[]dishAmount, String[]dishPrices){
        this.dishNames = dishNames;
        this.dishAmount = dishAmount;
        this.dishPrices = dishPrices;
        mInflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.recyclerview_create_order,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        ((ViewHolder)holder).dishBox.setText(" " + dishNames[position] + " (" + dishAmount[position] + ")");
        ((ViewHolder)holder).txtPrice.setText("$" + dishPrices[position]);
    }

    @Override
    public int getItemCount() {
        return dishNames.length;
    }

    void setClickListener(ItemClickListener itemClickListener){
        this.itemClickListener = itemClickListener;
    }

    public interface ItemClickListener{
        void onItemClick(View view, int position);
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        TextView dishBox;
        TextView txtPrice;

        public ViewHolder(@NonNull View itemView){
            super(itemView);
            dishBox = itemView.findViewById(R.id.dishBox);
            txtPrice = itemView.findViewById((R.id.txtPrice));
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if(itemClickListener!=null){
                itemClickListener.onItemClick(view,getAdapterPosition());
            }
        }
    }
}

CustomerCreateOrder.java

public class CustomerCreateOrder extends AppCompatActivity implements CustomerCreateOrderAdapter.ItemClickListener{

    DataBaseHelper dbh;
    CustomerCreateOrderAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_customer_create_order);
        Button btnOrder = findViewById(R.id.btnOrder);
        RadioButton radioPickup = findViewById(R.id.pickupRadio);
        RadioButton radioDelivery = findViewById(R.id.deliveryRadio);
        Bundle extras = getIntent().getExtras();
        String restaurantIds = null;
        String address = "";
        if (extras != null) {
            restaurantIds = extras.getString("id");
            address = extras.getString("address");
        }
        dbh = new DataBaseHelper(this);

        Cursor c = dbh.viewDataFromFoodStocksTable(String.valueOf(restaurantIds));
        String[] dishName = new String[c.getCount()];
        String[] dishAmount = new String[c.getCount()];
        String[] dishPrices = new String[c.getCount()];
        String pickupTime = new String();
        int count = 0;
        if (c.getCount() > 0) {
            while (c.moveToNext()) {
                dishName[count] = c.getString(1);
                dishAmount[count] = c.getString(3);
                dishPrices[count] = c.getString(4);
                pickupTime = c.getString(5);
                count++;
            }
        }

        RecyclerView recyclerView = findViewById(R.id.foodRecycler);
        recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
        adapter = new CustomerCreateOrderAdapter(this, dishName, dishAmount, dishPrices);
        recyclerView.setAdapter(adapter);
        String finalAddress = address;
        String pickup = pickupTime;
        btnOrder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(radioPickup.isChecked()){
                    Intent i = new Intent(CustomerCreateOrder.this,CustomerPickupOrder.class);
                    Bundle extras = new Bundle();
                    extras.putString("address", finalAddress);
                    extras.putString("pickup", pickup);
                    i.putExtras(extras);
                    startActivity(i);
                }else if(radioDelivery.isChecked()){
                    Intent a = new Intent(CustomerCreateOrder.this,CustomerDeliveryOrder.class);
                    a.putExtra("address", finalAddress);
                    startActivity(a);
                }

            }
        });
    }

    @Override
    public void onItemClick(View view, int position) {

    }
}

Food items using recycler view

在显示“Am”的 editText 上,我希望用户输入一个数字,当按下 Order 时,它将显示在下一个活动中。

CustomerPickupOrder.java

public class CustomerPickupOrder extends AppCompatActivity {

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

        TextView txtRestaurant = findViewById(R.id.txtRestaurantAddress);
        TextView txtPickup = findViewById(R.id.txtTime);

        Bundle extras = getIntent().getExtras();
        String address = "";
        String pickupTime = "";
        if (extras != null) {
            address = extras.getString("address");
            pickupTime = extras.getString("pickup");
        }
        txtRestaurant.setText(address);
        txtPickup.setText(pickupTime);
    }
}

show selected items

我想我应该在这里使用另一个 RecyclerView 但不确定。

我尝试添加一个列表视图和回收器视图,但不确定如何实现它。

如果您需要更多代码,请告诉我。

谢谢。

java android listview android-recyclerview
© www.soinside.com 2019 - 2024. All rights reserved.