package com.example.health.foodlist; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; import com.example.health.Bean.FoodBean; import com.example.health.Bean.Foodinfo; import com.example.health.R; import com.example.health.food_grid.FoodDescActivity; import com.example.health.food_grid.FoodGridActivity; import java.util.ArrayList; import java.util.List; public class ListActivity extends AppCompatActivity implements View.OnClickListener { EditText list_edit; ImageView list_refresh,list_serach; ListView list_foodlist; //Listview的内部数据源 List mDatas; List allFoodList; private ListAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); //查找控件 intiView(); //找到Listview对应的数据源 mDatas = new ArrayList<>(); allFoodList = Foodinfo.getAllFoodList(); mDatas.addAll(allFoodList); //创建适配器 BaseAdapter的子类 adapter = new ListAdapter(this, mDatas); list_foodlist.setAdapter(adapter);//设置适配器 //设置单向点击监听功能 setListener(); } private void setListener() { list_foodlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { FoodBean foodBean = mDatas.get(position); Intent intent = new Intent(ListActivity.this, FoodDescActivity.class); intent.putExtra("food",foodBean); startActivity(intent); } }); } private void intiView() { list_edit=findViewById(R.id.info_edit); list_refresh=findViewById(R.id.info_refresh); list_serach=findViewById(R.id.info_search); list_foodlist=findViewById(R.id.info_foodlistview); list_refresh.setOnClickListener(this);//添加点击事件的监听器 list_serach.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.info_refresh://刷新点击 list_edit.setText(""); mDatas.clear(); mDatas.addAll(allFoodList); adapter.notifyDataSetChanged(); break; case R.id.info_search://搜索点击 // 获取输入内容,判断不为空 String input = list_edit.getText().toString().trim(); if (TextUtils.isEmpty(input)) { Toast.makeText(this, "输入内容不能为空!", Toast.LENGTH_SHORT).show(); return; } // 判断所有食物列表的标题是否包含输入内容,如果包含,就添加到小集合中 Listlist = new ArrayList<>(); for (int i = 0; i < allFoodList.size(); i++) { String foodName = allFoodList.get(i).getFoodName(); if (foodName.contains(input)) { list.add(allFoodList.get(i)); } mDatas.clear();//清空Listview的适配器的内容 mDatas.addAll(list);//添加新的数据到数据源中 adapter.notifyDataSetChanged();//提升适配器更新 } break; } } }