首页 > 解决方案 > 将复选框添加到 ListView

问题描述

您好,我目前正在尝试在 android 上制作我的第一个应用程序,但遇到了一些问题。我正在尝试制作一个待办事项列表应用程序,因此希望将某种输入转换为复选框。我已经使用 radioGroup 使它与单选按钮一起工作。但是当使用带有 ListView 的 Checkboxes 时,它就不起作用了。

这是我的代码:

public class MainActivity extends AppCompatActivity {

EditText t;
ListView listView;
ArrayList<CheckBox> checkList = new ArrayList<>();
int i = 0;

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

public void add(View view){

    t = findViewById(R.id.input);
    String s = t.getText().toString();

    CheckBox check = new CheckBox(this);
    checkList.add(check);

    listView = findViewById(R.id.list);

    checkList.get(i).setText(s);
    listView.addView(checkList.get(i));


    i++;
    t.setText("");

}}

该应用程序崩溃说有关适配器视图

标签: javaandroid

解决方案


不幸的是,你在这里做错了什么。您正在尝试将您的视图添加到 Listviews

listView.addView(checkList.get(i));

这不是使用 ListViews 的正确方法。您必须使用适配器。适配器需要为要加载的列表视图提供数据。

请查看教程以了解如何使用列表视图。

以下是正确使用 listView 的步骤摘要。

  • custom_cell.xml在您的布局文件夹中创建一个新的布局文件(例如)。
  • 在您的内部插入一个复选框custom_cell.xml并放置一个 ID,您可以稍后使用它来识别该复选框
  • 为您的列表视图创建一个适配器
  • 覆盖getView方法
  • 在方法内部,使用或重用现有单元格(如果提供getView)为新单元格充气custom_cell.xml
  • custom_cell.xml使用您在文件中提供的 ID 引用复选框

推荐阅读