parent
2b76cf9bca
commit
e131f48ace
@ -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> drinks_array = new ArrayList<Drinks>(); //可选的饮品列表
|
||||||
|
private ArrayList<LeftBean> titles_array = new ArrayList<LeftBean>(); //饮品类别列表
|
||||||
|
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<ArrayList<Drinks>>() {}.getType();
|
||||||
|
ArrayList<Drinks> drinks = gson.fromJson(responseData, DrinksListType);
|
||||||
|
// 对饮品列表进行排序,先非主食后主食
|
||||||
|
ArrayList<Drinks> mainDishArray = new ArrayList<>();
|
||||||
|
ArrayList<Drinks> 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<String> 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 {
|
||||||
|
// 处理请求失败
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue