Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用android studio中的listview根据类函数的返回进行搜索?_Java_Android - Fatal编程技术网

Java 如何使用android studio中的listview根据类函数的返回进行搜索?

Java 如何使用android studio中的listview根据类函数的返回进行搜索?,java,android,Java,Android,我正在学习java和android studio,我正在尝试制作一个菜单,每个食物都是一个单独的类,其中一组过敏原的值是真是假。我将每个类的对象添加到ArrayList中,以使用列表视图显示它们。我已经实现了一个可以正常工作的搜索栏,但是我正在尝试修改ContextChanged函数,以便例如,如果用户键入“麸质”,它将返回所有不包含该过敏原的食物 我的代码如下所示,注释掉的部分是我尝试过的一些测试 import androidx.appcompat.app.AppCompatActivity

我正在学习java和android studio,我正在尝试制作一个菜单,每个食物都是一个单独的类,其中一组过敏原的值是真是假。我将每个类的对象添加到ArrayList中,以使用列表视图显示它们。我已经实现了一个可以正常工作的搜索栏,但是我正在尝试修改ContextChanged函数,以便例如,如果用户键入“麸质”,它将返回所有不包含该过敏原的食物

我的代码如下所示,注释掉的部分是我尝试过的一些测试


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