android - Order App - Android 将值数组发布到数据库
问题描述
我正在为我正在处理的项目的一部分创建一个订单应用程序。基本上,在一项活动中,用户可以查看从数据库中提取的所有项目的列表作为 ListView。他们还有一个 EditText 字段,他们可以在其中输入他们想要在每个项目下方订购的数量。
我想在屏幕底部有一个提交按钮,然后将发布所有订购商品的详细信息(即它们的商品 ID)和订购数量,但我不确定如何执行此操作。
这是我当前的代码:
public class OrderItems extends AppCompatActivity {
String menuID;
private TextView menuTitle;
ListView listView;
List<OrderItemList> listOrderItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_items);
menuTitle = findViewById(R.id.tvOrderMenuTitle);
Intent intent = getIntent();
String title = intent.getStringExtra("title");
menuID = intent.getStringExtra("id");
menuTitle.setText(title);
listView = findViewById(R.id.list_order_items);
listOrderItems = new ArrayList<>();
displayItems();
}
private void displayItems(){
String url = "hidden";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray array = obj.getJSONArray("menuitems");
for (int i = 0; i < array.length(); i++) {
final JSONObject menuObj = array.getJSONObject(i);
OrderItemList o = new OrderItemList(menuObj.getString("menu_item_name"),
menuObj.getString("item_type"), menuObj.getInt("menu_item_price"), menuObj.getInt("menu_item_qty"));
listOrderItems.add(o);
}
OrderItemAdapter adapter = new OrderItemAdapter(listOrderItems, getApplicationContext());
listView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(OrderItems.this, "Oops! " +error.toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("menuid", menuID);
return params;
}
};
MySingleton.getInstance(this).addToRequestQueue(stringRequest);
}
}
尽管我无法在 EditText 框中输入要订购的项目数量,但显示项目工作正常,一旦我输入它然后转到下一个框,之前的值就会消失。
模型类如下所示:
public class OrderItemList {
String Name, Type;
int Price, Qty;
public OrderItemList(String name, String type, int price, int qty) {
Name = name;
Type = type;
Price = price;
Qty = qty;
}
public String getName() {
return Name;
}
public int getQty() {
return Qty;
}
public String getType() {
return Type;
}
public int getPrice() {
return Price;
}
}
和适配器:
public class OrderItemAdapter extends ArrayAdapter <OrderItemList>{
private List<OrderItemList> orderItemList1;
private Context context;
public OrderItemAdapter(List<OrderItemList> M, Context C){
super(C, R.layout.listorder, M);
this.orderItemList1 = M;
this.context = C;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.listorder,null,true);
TextView menuItemName = view.findViewById(R.id.tvItemName);
TextView menuItemPrice = view.findViewById(R.id.tvItemPrice);
TextView menuItemType = view.findViewById(R.id.tvItemType);
TextView menuItemQty = view.findViewById(R.id.tvItemQty);
OrderItemList orderItemList = orderItemList1.get(position);
menuItemName.setText(orderItemList.getName());
menuItemQty.setText("Available quantity: " +orderItemList.getQty());
menuItemPrice.setText("£" +orderItemList.getPrice());
if(position>0){
OrderItemList prevOrderItemList = orderItemList1.get(position-1);
if(!orderItemList.getType().equals(prevOrderItemList.getType())){
menuItemType.setText(orderItemList.getType());
}
} else {
menuItemType.setText(orderItemList.getType());
}
return view;
}
}
任何帮助/建议将不胜感激!
解决方案
推荐阅读
- string - golang 在编译时删除 const 字符串中的字符(用于提高可读性)(空格、\n 和 \t)
- flutter - 想要建议使用 dart 在颤振中创建 UI
- r - r中的文本分析
- python - 如何打开 android sdk 24 管理器
- ironpython - 如何使用 IronPython 向 Spotfire 上的图形表上的图标添加操作
- django - 准备一个命令的字符串表示,然后执行 id
- c# - 如何将子实体映射到 EF Core 中的同一个表
- java - 使用枚举变量切换字符串
- r - 将数据框中的某个范围内的值乘以一个数字
- c++ - C++ Windows - 如果清单需要管理员权限,则 CreateProcessAsUser() 失败但没有错误