Java 无法选中多个复选框

Java 无法选中多个复选框,java,android,arraylist,Java,Android,Arraylist,我试图检查每个项目的复选框,但应用程序不断崩溃 这是我的新配料: public class NewIngredients extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_new_in

我试图检查每个项目的复选框,但应用程序不断崩溃

这是我的新配料:

public class NewIngredients extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate (savedInstanceState);
       setContentView (R.layout.activity_new_ingredients);

       readCSV ();
   } 

   public void readCSV(){
       List<IngredientsHolder> data = new ArrayList<> ();
       try {
           String sCurrentline = null;
           BufferedReader br = new BufferedReader(new FileReader ("/sdcard/TABLE_BF.csv"));
           sCurrentline = br.readLine ();
           while ((sCurrentline = br.readLine()) != null) {
               String[] arr = sCurrentline.split(",");
               IngredientsHolder ingredient = new IngredientsHolder(arr[0], arr[1], arr[2]);
               data.add(ingredient);
           }
           br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        Map<String, List<IngredientsHolder>> ingredientsByName = data.stream().collect(Collectors.groupingBy(IngredientsHolder::getName));

        List<IngredientsHolder> main = new ArrayList<>();
        List<IngredientsHolder> other = new ArrayList<>();

        //Sort on `admin` in descending order
        Comparator<IngredientsHolder> comparator = Comparator.comparing(IngredientsHolder:: getAdmin, (i1, i2) -> {
            if (i2 > i1) {
                return -1;
            } else if (i2 < i1) {
                return 1;
            }
            return 0;
        });

        //Go through each list (ingredient) and find the one with max `admin` value
        //and add it to the `main` list then add the rest to `other`
        ingredientsByName.forEach( (k, group) -> {
            IngredientsHolder max = group.stream().max(comparator).get();
            if (max.getAdmin() == 0) {
                max = group.get(0);
            }if(max.getAdmin () > 0){
                //group.forEach(System.out::println);
                int value = max.getAdmin ();

                List<IngredientsHolder> filtered = (group.stream()
                             .filter(mc -> mc.getAdmin() == value)
                             .collect(Collectors.toList()));
                //filtered.forEach(mc -> System.out.println (mc.toString ()));
            }

            main.add(max);
            group.remove(max);
            other.addAll(group);
            System.out.println (other.size ());
        });

        List<IngredientsHolder> newMain = main.stream().distinct().collect(Collectors.toList());
        ListView lv = (ListView) findViewById(R.id.list);
        lv.setAdapter(new CustomAdapter(NewIngredients.this,newMain));
    }
}
这是我的自定义_ni.xml文件:

<CheckBox
    android:id="@+id/checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_centerVertical="true"
    android:layout_marginEnd="7dp"
    android:onClick="clickHandler"></CheckBox>

<TextView
    android:id="@+id/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="13dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="9dp"
    android:layout_toLeftOf="@id/checkbox"
    android:text="TEST"
    android:textColor="#000"
    android:textSize="18sp" />

</RelativeLayout>
我尝试了一些教程和一些建议,但我似乎无法实现任何正确的方法


我真正想做的是检查多个项目并将这些检查的项目存储到arraylist中,而这些项目也将这些未检查的项目存储到另一个arraylist中。

clickHandler,源代码中缺少方法。

clickHandler,方法在源代码中丢失。

id为的复选框<代码>复选框有一个名为<代码>clickHandler的单击处理程序,但它没有在java类中实现

public void clickHandler(View view) {

}
要么移除

android:onClick="clickHandler"
或者将
clickhandler
方法添加到java类中

public void clickHandler(View view) {

}

id为
Checkbox
的复选框有一个名为
clickHandler
的单击处理程序,但它没有在java类中实现

public void clickHandler(View view) {

}
要么移除

android:onClick="clickHandler"
或者将
clickhandler
方法添加到java类中

public void clickHandler(View view) {

}

您应该在man ArrayList中保留一个标志,以根据标志值设置选中和未选中复选框


因此,您不需要创建两个单独的列表。

您应该在man ArrayList中保留一个标志,以便根据标志值设置选中和未选中复选框


因此,您无需创建两个单独的列表。

发布来自crashI的stacktrace认为崩溃与复选框无关,因为适配器中没有复选框的引用发布来自crashI的stacktrace认为崩溃与复选框无关,因为适配器中没有复选框的引用