package com.example.drink_order_system; import static com.example.drink_order_system.Restaurant.all_restaurant; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SearchView; import android.widget.TextView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * A simple {@link Fragment} subclass. * Use the {@link RestaurantFragment#newInstance} factory method to * create an instance of this fragment. */ public class RestaurantFragment extends Fragment { private ArrayList restaurant_array = new ArrayList(); private RestaurantAdapter Adapter; // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; private LinearLayoutManager llM; private SearchView searchView; private Context mContext = this.getActivity(); private RecyclerView listView; // TODO: Rename and change types of parameters private String mParam1; private String mParam2; private String userName; @SuppressLint("ValidFragment") public RestaurantFragment(String userName) { // Required empty public constructor this.userName=userName; } public RestaurantFragment() { // Required empty public constructor } public static RestaurantFragment newInstance(String param1, String param2) { RestaurantFragment fragment = new RestaurantFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); 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_restaurant, container, false); SearchView mSearch = (SearchView) view.findViewById(R.id.my_search); listView = (RecyclerView) view.findViewById(R.id.RV_restaurant); searchView = (SearchView) view.findViewById(R.id.my_search); initData(); llM = new LinearLayoutManager(this.getActivity()); listView.setLayoutManager(llM); Adapter = new RestaurantAdapter(inflater, all_restaurant); Adapter.setOnItemClickListener(new RestaurantAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { // 获取点击的餐厅对象 Restaurant clickedRestaurant = all_restaurant.get(position); String restaurantName = clickedRestaurant.get_name(); // 获取餐厅名称 // 创建 Intent 并传递餐厅名称到 OrderActivity Intent intent = new Intent(getActivity(), OrderActivity.class); intent.putExtra("userName", userName); intent.putExtra("restaurantName", restaurantName); startActivity(intent); } }); listView.setAdapter(Adapter); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } // 在搜索文本变化监听中更新数据源 @Override public boolean onQueryTextChange(String queryText) { ArrayList filteredRestaurants = new ArrayList<>(); for (Restaurant restaurant : restaurant_array) { if (restaurant.get_name().contains(queryText)) { filteredRestaurants.add(restaurant); } } // 更新适配器数据源 getActivity().runOnUiThread(new Runnable() { @Override public void run() { Adapter.setRestaurantList(filteredRestaurants); } }); return true; } }); return view; } private void initData() { String url="http://192.168.43.176:8080/warehouse_management_system_war_exploded/getStore"; // new Restaurant("a", 100, // "川菜馆", url); restaurant_array = all_restaurant; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); Log.i("responseDataR","fail"); // 处理请求失败 } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String responseData = response.body().string(); Log.i("responseDataR",responseData); Gson gson = new Gson(); Type restaurantListType = new TypeToken>() {}.getType(); final ArrayList restaurants = gson.fromJson(responseData, restaurantListType); getActivity().runOnUiThread(() -> { all_restaurant.clear(); all_restaurant.addAll(restaurants); Adapter.notifyDataSetChanged(); }); } else { // 处理请求失败 } } }); } }