Java 如何使用android studio中的listview根据类函数的返回进行搜索?
我正在学习java和android studio,我正在尝试制作一个菜单,每个食物都是一个单独的类,其中一组过敏原的值是真是假。我将每个类的对象添加到ArrayList中,以使用列表视图显示它们。我已经实现了一个可以正常工作的搜索栏,但是我正在尝试修改ContextChanged函数,以便例如,如果用户键入“麸质”,它将返回所有不包含该过敏原的食物 我的代码如下所示,注释掉的部分是我尝试过的一些测试Java 如何使用android studio中的listview根据类函数的返回进行搜索?,java,android,Java,Android,我正在学习java和android studio,我正在尝试制作一个菜单,每个食物都是一个单独的类,其中一组过敏原的值是真是假。我将每个类的对象添加到ArrayList中,以使用列表视图显示它们。我已经实现了一个可以正常工作的搜索栏,但是我正在尝试修改ContextChanged函数,以便例如,如果用户键入“麸质”,它将返回所有不包含该过敏原的食物 我的代码如下所示,注释掉的部分是我尝试过的一些测试 import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.text.Editable;
import android.text.TextWatcher;
import java.util.ArrayList;
import java.util.*;
import android.widget.EditText;
import android.widget.ArrayAdapter;
import android.widget.ListView;
//Test Classes for now will be added into a different file once working as intended.
class Pad_Thai{
public
String name = "Pad Thai";
boolean gluten = false;
boolean shellfish = true;
}
class Fried_Rice{
public
String name = "Fried Rice";
boolean gluten = true;
boolean shellfish = true;
}
class Beef_Broc{
public
String name = "Beef & Broc";
boolean gluten = true;
boolean shellfish = true;
}
//Testing Function to test if an object of a class has that allergen
//public class hasGluten {
// public boolean yes(boolean []arr) {
// for (int i = 0; i < arr.length; i++) {
// if (arr[i] == true) {
// }
// }
// return true;
// }
//}
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private ArrayAdapter adapter;
private ArrayAdapter adapter2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list = (ListView) findViewById(R.id.theList);
EditText theFilter = (EditText) findViewById(R.id.searchFilter);
Log.d(TAG, "onCreate: Started.");
//Creating Objects of the Specified classes
Pad_Thai obj = new Pad_Thai();
Beef_Broc obj2= new Beef_Broc();
Fried_Rice obj3= new Fried_Rice();
//array of an object of classes
ArrayList<String> food = new ArrayList<>();
//testing array
ArrayList<String> names = new ArrayList<>();
food.add(obj.name);
food.add(obj2.name);
food.add(obj3.name);
names.add("Orange Chicken");
names.add("Pad Thai");
names.add("Fried Rice");
names.add("Beef and Broc");
names.add("Special Tempora");
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, food);
adapter2 = new ArrayAdapter(this, android.R.layout.simple_list_item_1, names);
list.setAdapter(adapter);
theFilter.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
(MainActivity.this).adapter.getFilter().filter(charSequence);
//int textlength = charSequence.length();
//ArrayList<food> tempArrayList = new ArrayList<food>();
//for (food c : tempArrayList) {
// if (c.hasGluten() == false) {
// tempArrayList.add(c);
// }
//}
//mAdapter = new food(activity, tempArrayList);
//lv.setAdapter(madapter);
String gluten = "gluten";
if (charSequence == gluten)
{
(MainActivity.this).adapter2.getFilter();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
}
导入androidx.appcompat.app.appcompat活动;
导入android.os.Bundle;
导入android.util.Log;
导入android.text.Editable;
导入android.text.TextWatcher;
导入java.util.ArrayList;
导入java.util.*;
导入android.widget.EditText;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
//一旦按预期工作,现在的测试类将被添加到不同的文件中。
泰国班{
公众的
String name=“Pad Thai”;
布尔面筋=假;
布尔贝类=真;
}
班级炒饭{
公众的
String name=“炒饭”;
布尔面筋=真;
布尔贝类=真;
}
等级牛肉{
公众的
String name=“牛肉和花椰菜”;
布尔面筋=真;
布尔贝类=真;
}
//测试函数,用于测试类的对象是否具有该过敏原
//公共级面筋{
//公共布尔值是(布尔值[]arr){
//对于(int i=0;i