我是使用 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) {
}
}
在显示“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);
}
}
我想我应该在这里使用另一个 RecyclerView 但不确定。
我尝试添加一个列表视图和回收器视图,但不确定如何实现它。
如果您需要更多代码,请告诉我。
谢谢。