将复选框添加到ListView

时间:2018-11-09 13:03:22

标签: java android

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

这是我的代码:

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("");

}}

该应用程序崩溃,并说了一些关于adapterView的信息

1 个答案:

答案 0 :(得分:0)

很遗憾,您在这里做错了什么。您正在尝试将视图添加到上的列表视图

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

这不是使用ListViews的正确方法。您必须使用适配器。适配器需要提供数据以供listview加载。

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

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

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