如何在填充ListView时删除ListView项

时间:2014-01-07 22:19:52

标签: android listview loops textview strikethrough

所以我在ListView项目上应用删除线时会遇到这个大问题,同时从我的对象列表中填充它。

    private void setListItems() {
        DatabaseHandler db = new DatabaseHandler(this);
        List<ToDoTask> taskList = db.getAllTasks();

        for (ToDoTask tt : taskList) {
            this.listAdapter.add(tt.getName());
        }

        this.listAdapter.notifyDataSetChanged();
    }

这部分代码填充了我的ListView。现在我想在项目中添加删除线

    tt.getActive() == 0

我不知道如何从ListView获取TextView项目。我在for循环中试过:

    TextView textView = (TextView) this.listView.getChildAt(this.listView.getCount() -1);

但应用程序崩溃了。 没有崩溃我的应用程序的唯一解决方案是:

    TextView textView = this.listAdapter.getView(this.listView.getCount() -1, null, null)

但它实际上并没有改变ListView中的任何内容。我认为它不是引用对象本身。 这是一些实例化我的变量的代码:

    this.listView = (ListView) findViewById(R.id.listViewItem);
    this.listItems = new ArrayList<String>();
    this.listAdapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_1, this.listItems);
    this.listView.setAdapter(this.listAdapter);

1 个答案:

答案 0 :(得分:2)

列表视图不负责实例化或修改它包含的视图的基础状态。这是适配器的工作。当您滚动ListView时,它会调用适配器方法getView(),并且适配器将把它交给一行(可能是从屏幕外滚动的行中的循环视图)。

getView()方法中,适配器应查询基础数据集并根据需要修改行 - 包括删除文本或设置行内容的任何可视属性。