From e131f48aceb123ca5f1cc1ee85f34fd79ff68746 Mon Sep 17 00:00:00 2001 From: puem2gl9z <2777269348@qq.com> Date: Fri, 30 Aug 2024 15:39:51 +0800 Subject: [PATCH] ADD file via upload --- OrderFragment.java | 278 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 OrderFragment.java diff --git a/OrderFragment.java b/OrderFragment.java new file mode 100644 index 0000000..1bb0c0c --- /dev/null +++ b/OrderFragment.java @@ -0,0 +1,278 @@ +package com.example.drink_order_system; + +import static com.example.drink_order_system.Drinks.all_drinks; +import static com.example.drink_order_system.Restaurant.all_restaurant; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.app.Fragment; +import android.util.Log; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Adapter; +import android.widget.ImageView; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.SearchView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.squareup.picasso.Picasso; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashSet; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OrderFragment extends Fragment { + Right_adapter rightAdapter; + private ArrayList drinks_array = new ArrayList(); //可选的饮品列表 + private ArrayList titles_array = new ArrayList(); //饮品类别列表 + private RecyclerView right_listView; //右侧饮品列表 + private RecyclerView left_listView; //左侧类别列表 + private LinearLayoutManager right_llM; + private TextView right_title; + private SearchView searchView; + private String restaurantName; + + private AlertDialog chooseDialog = null; + private AlertDialog.Builder builder = null; + private View view_choose; + + private Context mContext = this.getActivity(); + + public OrderFragment() { + // Required empty public constructor + } + public static OrderFragment newInstance(String restaurantName) { + OrderFragment fragment = new OrderFragment(); + Bundle args = new Bundle(); + args.putString("restaurantName", restaurantName); + fragment.setArguments(args); + return fragment; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_order, container, false); + SearchView mSearch = (SearchView) view.findViewById(R.id.my_search); + int id = mSearch.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); + TextView text_search = (TextView) mSearch.findViewById(id); + text_search.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); + if (getArguments() != null) { + restaurantName = getArguments().getString("restaurantName"); + } + + right_title = (TextView) view.findViewById(R.id.Top_drinkType); + + right_listView = (RecyclerView) view.findViewById(R.id.rec_right); + left_listView = (RecyclerView) view.findViewById(R.id.rec_left); + searchView = (SearchView) view.findViewById(R.id.my_search); + builder = new AlertDialog.Builder(this.getActivity()); + view_choose = inflater.inflate(R.layout.dialogue_choose, null, false); + builder.setView(view_choose); + builder.setCancelable(false); + chooseDialog = builder.create(); + + view_choose.findViewById(R.id.button_exit).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + chooseDialog.dismiss(); + } + }); + + view_choose.findViewById(R.id.button_buy).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + TextView drinkName = view_choose.findViewById(R.id.choose_drinkName); + //写买进购物车的逻辑 + System.out.println("drinkName:" + String.valueOf(drinkName.getText()).split(" #")[0]); + Drinks drink = new Drinks(Integer.parseInt(String.valueOf(drinkName.getText()).split(" #")[1])); + TextView numberTV = (TextView) view_choose.findViewById(R.id.textView_drinkNumber); + int number = Integer.parseInt((String) numberTV.getText()); + Ordered_drinks od = new Ordered_drinks(drink, number,restaurantName); + chooseDialog.dismiss(); + } + }); + + view_choose.findViewById(R.id.button_subtract).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TextView numberText = (TextView) view_choose.findViewById(R.id.textView_drinkNumber); + int i = Integer.parseInt(String.valueOf(numberText.getText())); + if (i > 1) { + i--; + } + numberText.setText(String.valueOf(i)); + } + }); + + view_choose.findViewById(R.id.button_add).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TextView numberText = (TextView) view_choose.findViewById(R.id.textView_drinkNumber); + int i = Integer.parseInt(String.valueOf(numberText.getText())); + if (i < 100) { + i++; + } + numberText.setText(String.valueOf(i)); + } + }); + + + right_llM = new LinearLayoutManager(this.getActivity()); + right_listView.setLayoutManager(right_llM); + rightAdapter = new Right_adapter(inflater, drinks_array); + right_listView.setAdapter(rightAdapter); + initData(); + + left_listView.setLayoutManager(new LinearLayoutManager(this.getActivity())); + LeftAdapter leftAdapter = new LeftAdapter(titles_array); + left_listView.setAdapter(leftAdapter); + + right_listView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + int firstItemPosition = right_llM.findFirstVisibleItemPosition(); + leftAdapter.setCurrentPosition(firstItemPosition); + if (leftAdapter.getCurrentTitle() != "") { + right_title.setText(leftAdapter.getCurrentTitle()); + } + } + }); + + + leftAdapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() { + @Override + public void onItemClicked(int rightPosition) { + if (right_llM != null) { + right_llM.scrollToPositionWithOffset(rightPosition, 0); + } + } + }); + + rightAdapter.buttonSetOnClick(new Right_adapter.MyClickListener() { + @Override + public void onclick(View v, int position) { + chooseDialog.show(); + if (view_choose != null) { + Drinks drink = drinks_array.get(position); + ImageView img = view_choose.findViewById(R.id.choose_drink_img); + Picasso.get().load(drink.get_imagePath()).into(img); + TextView name = view_choose.findViewById(R.id.choose_drinkName); + name.setText(drink.get_name() + " #" + (drink.get_number() + 1)); + TextView intro = view_choose.findViewById(R.id.choose_drinkIntro); + intro.setText(drink.get_introduction()); + TextView drink_number = view_choose.findViewById(R.id.textView_drinkNumber); + drink_number.setText("1"); + } + } + }); + + + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + return false; + } + + @Override + public boolean onQueryTextChange(String queryText) { + for (int i = 0; i < drinks_array.size(); i++) { + if (drinks_array.get(i).get_name().contains(queryText)) { + if (right_llM != null) { + right_llM.scrollToPositionWithOffset(i, 0); + break; + } + } + } + return true; + } + }); + return view; + } + + private void initData() { + String url = "http://192.168.43.176:8080/warehouse_management_system_war_exploded/getGoods"; + Log.i("restaurantName",restaurantName); + OkHttpClient client = new OkHttpClient(); + Request request = new Request.Builder() + .url(url+"?Sname="+restaurantName) + .build(); + Log.i("url",url+"?Sname="+restaurantName); + client.newCall(request).enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + e.printStackTrace(); + Log.i("onFailure","onFailure"); + // 处理请求失败 + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + if (response.isSuccessful()) { + + String responseData = response.body().string(); + getActivity().runOnUiThread(() -> { + Log.i("isSuccessful","isSuccessful"); + + Log.i("responseData",responseData); + Gson gson = new Gson(); + Type DrinksListType = new TypeToken>() {}.getType(); + ArrayList drinks = gson.fromJson(responseData, DrinksListType); + // 对饮品列表进行排序,先非主食后主食 + ArrayList mainDishArray = new ArrayList<>(); + ArrayList nonMainDishArray = new ArrayList<>(); + for (Drinks drink : drinks) { + if ("主食".equals(drink.get_type())) { + mainDishArray.add(drink); + } else { + nonMainDishArray.add(drink); + } + } + nonMainDishArray.addAll(mainDishArray); + drinks_array.clear(); + drinks_array.addAll(nonMainDishArray); + all_drinks.clear(); + all_drinks.addAll(nonMainDishArray); // 更新为排序后的饮品列表 + rightAdapter.notifyDataSetChanged(); + Log.i("drinks_array",String.valueOf(drinks_array.size())); + HashSet titleSet = new HashSet<>(); // 用于检查标题是否已经存在 + for (int i = 0; i < drinks_array.size(); i++) { + Drinks temp = drinks_array.get(i); + if (temp.get_type() != null && !titleSet.contains(temp.get_type())) { + titles_array.add(new LeftBean(i, temp.get_type())); + titleSet.add(temp.get_type()); // 将标题添加到集合中 + } + } + // titles_array.get(0).setSelect(true); + }); + } else { + // 处理请求失败 + } + } + }); + + + + + } +} \ No newline at end of file